首页
论坛
课程
招聘
看雪CTF.TSRC 2018 团队赛-第4题
2018-12-8 08:28 1622

看雪CTF.TSRC 2018 团队赛-第4题

2018-12-8 08:28
1622
1. 检测调试器, 修改验证逻辑
.text:00491010                 push    0
.text:00491012                 push    4
.text:00491014                 push    offset g_hDebugObject
.text:00491019                 push    1Eh             ; ProcessDebugObjectHandle
.text:0049101B                 call    ds:GetCurrentProcess
.text:00491021                 push    eax
.text:00491022                 call    ZwQueryInformationProcess
...
.text:0049104F                 cmp     g_hDebugObject, 0
.text:00491056                 jnz     short loc_49106A
.text:00491058                 call    $+5
.text:0049105D                 pop     eax
.text:0049105E                 sub     eax, 8F9A0h
.text:00491063                 mov     byte ptr [eax], 0EBh ; 004016BD
.text:00491066                 inc     eax
.text:00491067                 mov     byte ptr [eax], 0Dh
.text:0049106A                 mov     edi, 0BB40E64Eh
.text:0049106F                 retn
...
.text:004016BD                 jmp     short loc_4016CC

2. 验证函数及成功条件
sn(16进制)长度16, 记为DWORD sn[2];
sn经过00401C70计算后, 必须满足 sn[0]==87654321 && sn[1]==12345678
.text:0040146B                 mov     edx, [ebp+sz_sn]
.text:0040146E                 push    edx
.text:0040146F                 call    strlen
.text:00401474                 add     esp, 4
.text:00401477                 cmp     eax, 10h
.text:0040147A                 jz      short loc_401483
...
.text:00401671                 push    0DEADBEEFh      ; int
.text:00401676                 lea     eax, [ebp+var_104+0C0h]
.text:00401679                 push    eax             ; int
.text:0040167A                 push    0DA8A0600h      ; int
.text:0040167F                 push    172442D7h       ; int
.text:00401684                 push    4914B2B9h       ; int
.text:00401689                 push    7380166Fh       ; int
.text:0040168E                 push    10325476h       ; int
.text:00401693                 push    98BADCFEh       ; int
.text:00401698                 push    0EFCDAB89h      ; int
.text:0040169D                 push    67452301h       ; int
.text:004016A2                 mov     ecx, [ebp+key]
.text:004016A8                 push    ecx             ; int
.text:004016A9                 lea     edx, [ebp+sn]
.text:004016AF                 push    edx             ; int
.text:004016B0                 call    sub_401C70
...
.text:004016D9                 cmp     [ebp+ecx+sn], 87654321h
.text:004016E4                 jnz     short loc_401707
.text:004016E6                 mov     edx, 4
.text:004016EB                 shl     edx, 0
.text:004016EE                 cmp     [ebp+edx+sn], 12345678h
.text:004016F9                 jnz     short loc_401707
.text:004016FB                 mov     [ebp+ok], 1

3. 00401C70这个函数中有很多垃圾代码, 先搜索特征码, 把里面的所有垃圾循环patch掉再trace
.text:00401DA4                 cmp     ebx, 0F204Ch
.text:00401DAA                 jb      short loc_401D87
.text:00401DAC                 call    $+5
.text:00401DB1                 pop     esi

4. 写代码清理trace文件
import re


def read_file(file_name):
    f = open(file_name, 'r')
    lines = f.readlines()
    f.close()
    return lines


def write_file(file_name, lines):
    f = open(file_name, 'w')
    f.writelines(lines)
    f.close()
    return


def has_substring(s, s_list):
    if isinstance(s_list, str):
        return s.find(s_list) != -1
    for v in s_list:
        if s.find(v) != -1:
            return True
    return False


def has_consecutive_substring(lines, i, s_list):
    for k in range(len(s_list)):
        if not has_substring(lines[i+k], s_list[k]):
            return False
    return True


def extract_imm_value(s):  # type:(str) -> int
    # reg, 0x12345678
    # -> return 12345678
    pat = ',0x'
    i = s.find(pat) + len(pat)
    i_end = s.find(' ', i + 1)
    return int(s[i:i_end], 16)


def hex_with_sign(v):  # type:(int) -> str
    # 0x12345678 / 0xFFFFFFF8
    # -> return +0x12345678 / -0x8
    s = ''
    if v >= 0x80000000:
        v = 0x100000000 - v
        s += '-'
    else:
        s = '+'
    s += hex(v)
    s = s.replace('L', '')
    return s


def hex_without_sign(v):  # type:(int) -> str
    # 0x12345678
    # -> return 0x12345678
    s = ''
    s += hex(v)
    s = s.replace('L', '')
    return s


def evaluate_ss_edi_expr(s, edi):  # type:(str,int) -> str
    # 1. xxx reg,dword ptr ss:[ebp+edi]
    # 2. xxx reg,dword ptr ss:[ebp+edi+0x4BF7590F]
    # 3. xxx reg,dword ptr ss:[ebp+edi*2+0xDB8A93CE]
    # -> xxx reg,dword ptr ss:[ebp+imm]
    if s.find('[ebp+edi+') != -1:
        v = re.search('\\[ebp\\+edi\\+0x(.*)\\]', s).group(1)
        v = int(v, 16)
        edi += v
    elif s.find('[ebp+edi*') != -1:
        m = re.search('\\[ebp\\+edi\\*([^+]+)\\+0x(.*)\\]', s)
        v1 = int(m.group(1), 16)
        v2 = int(m.group(2), 16)
        edi = edi * v1 + v2
    elif s.find('[ebp+edi]') == -1:
        raise Exception('')
    edi %= 0x100000000
    v = '[ebp%s]' % hex_with_sign(edi)
    s = re.sub('\\[.*\\]', v, s)
    return s


def pass_nops(lines):
    new_lines = []
    i = 0
    while i < len(lines):
        line = lines[i]

        if has_substring(line, ['test', 'cld', 'cmp', 'nop', 'cmc', 'bt', 'clc', 'stc']):
            i += 1
            continue

        # or exx,0x0
        if re.search('or e..,0x0', line) is not None:
            i += 1
            continue

        # and exx,0xFFFFFFFF
        if re.search('and e..,0xFFFFFFFF', line) is not None:
            i += 1
            continue

        line = line.replace('transfor.', '0x')
        new_lines.append(line)
        i += 1
    return new_lines


def pass_edi(lines):
    # mov edi,0x
    # add edi,0x
    # ...
    # xxx reg,edi
    # -> xxx reg, imm
    new_lines = []
    i = 0
    while i < len(lines):
        line = lines[i]

        if has_substring(line, 'mov edi,0x'):
            k = 0
            while has_substring(lines[i + k + 1], ['sub edi', 'add edi']):
                k += 1
            if k > 0:
                if has_substring(lines[i + k + 1], ',edi'):
                    edi = 0
                    for z in range(i, i + k + 1):
                        v = extract_imm_value(lines[z])
                        if has_substring(lines[z], 'sub'):
                            edi -= v
                        else:
                            edi += v
                    edi %= 0x100000000
                    line = lines[i + k + 1].replace(',edi ', ',%s' % hex_without_sign(edi))
                    new_lines.append(line)
                    i += k + 2
                    continue
        new_lines.append(line)
        i += 1
    return new_lines


def pass_ebp(lines):
    # mov edi,0x
    # add edi,0x
    # ...
    # xxx reg, [ebp+edixxx]
    # -> xxx reg, imm
    new_lines = []
    i = 0
    while i < len(lines):
        line = lines[i]

        if has_substring(line, 'mov edi,0x'):
            k = 0
            while has_substring(lines[i + k + 1], ['sub edi', 'add edi']):
                k += 1
            if k > 0:
                if has_substring(lines[i + k + 1], 'ebp+edi'):
                    edi = 0
                    for z in range(i, i + k + 1):
                        v = extract_imm_value(lines[z])
                        if has_substring(lines[z], 'sub'):
                            edi -= v
                        else:
                            edi += v
                    edi %= 0x100000000
                    line = evaluate_ss_edi_expr(lines[i + k + 1], edi)
                    new_lines.append(line)
                    i += k + 2
                    continue
        new_lines.append(line)
        i += 1
    return new_lines


def pass_simplify_same_op(lines, op_name, reg_name):
    # xxx reg, imm1
    # xxx reg, imm2
    # ...
    # -> xxx reg, imm
    new_lines = []
    i = 0
    while i < len(lines):
        line = lines[i]
        pat = '%s %s,0x' % (op_name, reg_name)
        if has_substring(line, pat):
            k = 0
            while has_substring(lines[i + k + 1], pat):
                k += 1
            if k > 0:
                v = 0
                for z in range(i, i + k + 1):
                    v += extract_imm_value(lines[z])
                v %= 0x100000000
                if op_name.startswith('ro'):
                    # ror/rol
                    v %= 32
                if v != 0:
                    new_lines.append('00000000  %s %s,%s\n' % (op_name, reg_name, hex_without_sign(v)))
                i += k + 1
                continue

        new_lines.append(line)
        i += 1
    return new_lines


def pass_simplify_same_op_all(lines):
    lines = pass_simplify_same_op(lines, 'add', 'esi')
    lines = pass_simplify_same_op(lines, 'sub', 'esi')
    lines = pass_simplify_same_op(lines, 'add', 'edi')
    lines = pass_simplify_same_op(lines, 'sub', 'edi')
    lines = pass_simplify_same_op(lines, 'add', 'eax')
    lines = pass_simplify_same_op(lines, 'sub', 'eax')
    lines = pass_simplify_same_op(lines, 'ror', 'eax')
    lines = pass_simplify_same_op(lines, 'add', 'ebx')
    lines = pass_simplify_same_op(lines, 'sub', 'ebx')
    lines = pass_simplify_same_op(lines, 'ror', 'ebx')
    lines = pass_simplify_same_op(lines, 'add', 'ecx')
    lines = pass_simplify_same_op(lines, 'sub', 'ecx')
    lines = pass_simplify_same_op(lines, 'ror', 'ecx')
    lines = pass_simplify_same_op(lines, 'add', 'edx')
    lines = pass_simplify_same_op(lines, 'sub', 'edx')
    lines = pass_simplify_same_op(lines, 'ror', 'edx')
    lines = pass_simplify_same_op(lines, 'ror', 'esp')
    return lines


def pass_push_pop_eax_ebx_ecx(lines):
    # push eax
    # push ebx
    # push ecx
    # ...
    # pop ecx
    # pop ebx
    # pop eax
    # -> removed
    new_lines = []
    i = 0
    while i < len(lines):
        line = lines[i]
        if has_consecutive_substring(lines, i, ['push eax', 'push ebx', 'push ecx']):
            k = 3
            while not has_consecutive_substring(lines, i+k, ['pop ecx', 'pop ebx', 'pop eax']):
                k += 1
            i += k + 3
            continue
        new_lines.append(line)
        i += 1
    return new_lines


def pass_rol_to_ror(lines, reg_name):
    # rol xxx,0x -> ror xxx,0x
    new_lines = []
    pat = 'rol %s,0x' % reg_name
    i = 0
    while i < len(lines):
        line = lines[i]
        if has_substring(line, 'rol %s,1' % reg_name):
            new_lines.append('00000000  %s %s,%s\n' % ('ror', reg_name, hex_without_sign(31)))
            i += 1
            continue
        if has_substring(line, 'ror %s,1' % reg_name):
            new_lines.append('00000000  %s %s,%s\n' % ('ror', reg_name, hex_without_sign(1)))
            i += 1
            continue
        if has_substring(line, pat):
            v = extract_imm_value(line)
            v %= 32
            v = 32 - v
            new_lines.append('00000000  %s %s,%s\n' % ('ror', reg_name, hex_without_sign(v)))
            i += 1
            continue

        new_lines.append(line)
        i += 1
    return new_lines


def pass_rol_to_ror_all(lines):
    lines = pass_rol_to_ror(lines, 'eax')
    lines = pass_rol_to_ror(lines, 'ebx')
    lines = pass_rol_to_ror(lines, 'ecx')
    lines = pass_rol_to_ror(lines, 'edx')
    lines = pass_rol_to_ror(lines, 'esp')
    return lines


def pass_unused_before_reassign(lines, reg_name):
    # sub ecx, eax (-> removed)
    # ...
    # mov ecx, edx
    new_lines = []
    pat1 = ' %s,' % reg_name
    i = 0
    while i < len(lines):
        line = lines[i]
        if has_substring(line, pat1):
            k = 0
            unused = False
            while (i + k + 1) < len(lines):
                # if it is used/unused, break immediately
                if has_substring(lines[i + k + 1], ',%s,' % reg_name):
                    # imul xxx,reg,0x0
                    break
                dot = lines[i + k + 1].find(',')
                if dot == -1:
                    if not has_substring(lines[i + k + 1], '%s' % reg_name):
                        # push xxx
                        k += 1
                        continue
                    break
                if lines[i + k + 1].find(reg_name, dot) != -1:
                    # mov xxx, reg / mov xxx, [reg]
                    break
                if lines[i + k + 1].find('[', 0, dot) != -1 and lines[i + k + 1].find(reg_name, 0, dot) != -1:
                    # mov [xxx+ecx], xxx
                    break
                if has_substring(lines[i + k + 1], 'mov %s,' % reg_name):
                    unused = True
                    break
                k += 1
            # if (i + k + 1) >= len(lines):
            #     unused = True
            if unused:
                i += 1
                continue
        new_lines.append(line)
        i += 1
    return new_lines


def pass_unused_before_reassign_all(lines):
    lines = pass_unused_before_reassign(lines, 'ecx')
    lines = pass_unused_before_reassign(lines, 'edx')
    lines = pass_unused_before_reassign(lines, 'eax')
    lines = pass_unused_before_reassign(lines, 'ebx')
    lines = pass_unused_before_reassign(lines, 'edi')
    return lines


def pass_ror_to_shift(lines, reg_name):
    # ror edx,0x8
    # and edx,0xFFFFFF
    # -> shr edx, 8

    # ror ecx,0x1c
    # and ecx,0xFFFFFFF0
    # -> shl ecx,0x4
    new_lines = []
    i = 0
    while i < len(lines):
        line = lines[i]
        if has_substring(line, 'ror %s,0x' % reg_name):
            if has_substring(lines[i+1], 'and %s,0x' % reg_name):
                shift = extract_imm_value(line)
                mask = extract_imm_value(lines[i + 1])
                rmask = (1 << (32 - shift)) - 1
                lmask = 0xFFFFFFFF - ((1 << (32 - shift)) - 1)
                if rmask == mask:
                    line = '00000000  shr %s,%s\n' % (reg_name, hex_without_sign(shift))
                    new_lines.append(line)
                    i += 2
                    continue
                elif lmask == mask:
                    line = '00000000  shl %s,%s\n' % (reg_name, hex_without_sign(32 - shift))
                    new_lines.append(line)
                    i += 2
                    continue
        new_lines.append(line)
        i += 1
    return new_lines


def pass_ror_to_shift_all(lines):
    lines = pass_ror_to_shift(lines, 'eax')
    lines = pass_ror_to_shift(lines, 'ebx')
    lines = pass_ror_to_shift(lines, 'ecx')
    lines = pass_ror_to_shift(lines, 'edx')
    return lines


def test():
    lines = read_file('trace.txt')
    lines = pass_nops(lines)
    lines = pass_rol_to_ror_all(lines)
    lines = pass_edi(lines)
    lines = pass_ebp(lines)
    lines = pass_simplify_same_op_all(lines)
    lines = pass_push_pop_eax_ebx_ecx(lines)
    lines = pass_simplify_same_op_all(lines)
    lines = pass_rol_to_ror_all(lines)
    lines = pass_simplify_same_op_all(lines)
    lines = pass_push_pop_eax_ebx_ecx(lines)
    lines = pass_ebp(lines)
    lines = pass_edi(lines)
    lines = pass_simplify_same_op_all(lines)
    lines = pass_simplify_same_op_all(lines)
    for i in range(5):
        lines = pass_unused_before_reassign_all(lines)
    lines = pass_ror_to_shift_all(lines)
    write_file('trace_new.txt', lines)
    return


test()

化简后的trace文件
00403FA8  add esp,0x3c                              ; ESP=0018FD34
00408809  sub esp,0x40                              ; ESP=0018FCF4
00412E24  mov dword ptr ss:[esp],ebp
00419499  mov ebx,esp                               ; EBX=0018FCF4
0041AD08  push ebx                                  ; ESP=0018FCF0
0041C879  mov edx,esp                               ; EDX=0018FCF0
0041C8FD  add edx,0x4                              ; EDX=0018FCF4
0041C901  push edx                                  ; ESP=0018FCEC
00422E3B  mov edx,dword ptr ss:[ebp-0x4]; EDX=BB581942
00422F7E  add edx,dword ptr ss:[ebp-0x18]            ; EDX=BB581951
00000000  shl edx,0x4
00422FB8  pop edx                                   ; EDX=0018FCF4, ESP=0018FCF0
00422FBC  mov ebp,edx                               ; EBP=0018FCF4
0042595B  pop eax                                   ; EAX=0018FCF4, ESP=0018FCF4
00428184  mov ecx,0x4                               ; ECX=00000004
004282C0  sub esp,0x41c                              ; ESP=0018F8D8
004282C2  mov eax,0x4                               ; EAX=00000004
004282C8  imul ecx,eax,0x0                          ; ECX=00000000
004282E8  mov edx,dword ptr ss:[ebp+0x8]; EDX=0018FD3C
004282EF  mov eax,dword ptr ds:[edx+ecx]            ; EAX=12345678
0042830C  mov dword ptr ss:[ebp-0x4],eax
00428313  mov ecx,0x4                               ; ECX=00000004
0042837D  mov edx,dword ptr ss:[ebp+0x8]
0042849B  mov eax,dword ptr ds:[edx+ecx]            ; EAX=11223344
004284B6  mov dword ptr ss:[ebp-0x8],eax
004284D0  mov dword ptr ss:[ebp-0xc],0x0
004284F8  mov dword ptr ss:[ebp-0x1c],0x89ABCDEF
0042851A  mov dword ptr ss:[ebp-0x41c],0x6ACC9ABE
0042853C  mov dword ptr ss:[ebp-0x418],0xFEF0C950
00428566  mov dword ptr ss:[ebp-0x414],0x4A51A796
00428588  mov dword ptr ss:[ebp-0x410],0xBC63BE12
004286CE  mov dword ptr ss:[ebp-0x40c],0x298B3829
004286F6  mov dword ptr ss:[ebp-0x408],0x3B4E0749
00428720  mov dword ptr ss:[ebp-0x404],0x941901A0
00428751  mov dword ptr ss:[ebp-0x400],0xED1BB4B2
0042876E  mov dword ptr ss:[ebp-0x3fc],0x2D736408
0042878E  mov dword ptr ss:[ebp-0x3f8],0xBE9F8AB8
004287B6  mov dword ptr ss:[ebp-0x3f4],0x9B8DD1A7
00428936  mov dword ptr ss:[ebp-0x3f0],0x21EB2CA5
00428952  mov dword ptr ss:[ebp-0x3ec],0x68EB3772
0042897D  mov dword ptr ss:[ebp-0x3e8],0x90C27185
0042899F  mov dword ptr ss:[ebp-0x3e4],0xAEE0C189
004289D3  mov dword ptr ss:[ebp-0x3e0],0x92C012D0
004289F7  mov dword ptr ss:[ebp-0x3dc],0xA2030350
00428A1A  mov dword ptr ss:[ebp-0x3d8],0xE5B1D37E
00428B5A  mov dword ptr ss:[ebp-0x3d4],0xA62DEC32
00428B88  mov dword ptr ss:[ebp-0x3d0],0x8E240412
00428BB0  mov dword ptr ss:[ebp-0x3cc],0xC759D621
00428BCC  mov dword ptr ss:[ebp-0x3c8],0xA0A55016
00428BF4  mov dword ptr ss:[ebp-0x3c4],0xA55AF0EC
00428C10  mov dword ptr ss:[ebp-0x3c0],0xF5DAED71
00428C35  mov dword ptr ss:[ebp-0x3bc],0xC0339E47
00428C54  mov dword ptr ss:[ebp-0x3b8],0x906582CB
00428DA8  mov dword ptr ss:[ebp-0x3b4],0xB7E8526B
00428DD0  mov dword ptr ss:[ebp-0x3b0],0xBECF15B0
00428DF8  mov dword ptr ss:[ebp-0x3ac],0x34673541
00428E1E  mov dword ptr ss:[ebp-0x3a8],0x9C12D0D2
00428E4C  mov dword ptr ss:[ebp-0x3a4],0x92A40145
00428E74  mov dword ptr ss:[ebp-0x3a0],0x122820D3
00428F96  mov dword ptr ss:[ebp-0x39c],0xF5AC8446
00428FB2  mov dword ptr ss:[ebp-0x398],0xA11A3738
00428FD4  mov dword ptr ss:[ebp-0x394],0x46E860E2
00428FFB  mov dword ptr ss:[ebp-0x390],0x4046719A
0042901A  mov dword ptr ss:[ebp-0x38c],0xB7E93F82
004291EA  mov dword ptr ss:[ebp-0x388],0x830B4A24
00429212  mov dword ptr ss:[ebp-0x384],0xF7188E52
00429234  mov dword ptr ss:[ebp-0x380],0x575E1F74
00429260  mov dword ptr ss:[ebp-0x37c],0xD304F36
0042928B  mov dword ptr ss:[ebp-0x378],0xE757EAED
004292B9  mov dword ptr ss:[ebp-0x374],0xE64122B7
004293FF  mov dword ptr ss:[ebp-0x370],0xD8CDC82D
00429425  mov dword ptr ss:[ebp-0x36c],0x4C0D02E8
0042944F  mov dword ptr ss:[ebp-0x368],0x69011CE5
00429471  mov dword ptr ss:[ebp-0x364],0xC4D80CFD
00429496  mov dword ptr ss:[ebp-0x360],0xEC3E2A9
004294BE  mov dword ptr ss:[ebp-0x35c],0x2EF4C6D1
00429601  mov dword ptr ss:[ebp-0x358],0x5B1A517
00429667  mov dword ptr ss:[ebp-0x354],0x1D8F7CF5
00429683  mov dword ptr ss:[ebp-0x350],0xB8BC1E4A
0042969F  mov dword ptr ss:[ebp-0x34c],0xB915B219
004296C6  mov dword ptr ss:[ebp-0x348],0x9FF26619
004296E8  mov dword ptr ss:[ebp-0x344],0xCDD2C17E
00429846  mov dword ptr ss:[ebp-0x340],0xEFF61211
004298C0  mov dword ptr ss:[ebp-0x33c],0x1681DBE5
004298E2  mov dword ptr ss:[ebp-0x338],0x80E86C21
00429907  mov dword ptr ss:[ebp-0x334],0xCA8F25FC
00429A47  mov dword ptr ss:[ebp-0x330],0x2FC8907C
00429A73  mov dword ptr ss:[ebp-0x32c],0xFBE75F96
00429A96  mov dword ptr ss:[ebp-0x328],0xA9E23D46
00429ABD  mov dword ptr ss:[ebp-0x324],0xC06DE179
00429ADD  mov dword ptr ss:[ebp-0x320],0x80494B4E
00429AFC  mov dword ptr ss:[ebp-0x31c],0xEB0B932A
00429B24  mov dword ptr ss:[ebp-0x318],0xFC9EB503
00429C6B  mov dword ptr ss:[ebp-0x314],0x1299F060
00429C93  mov dword ptr ss:[ebp-0x310],0x36E56BBB
00429CAF  mov dword ptr ss:[ebp-0x30c],0xB4FB26B3
00429CDB  mov dword ptr ss:[ebp-0x308],0xFD369EBF
00429CFB  mov dword ptr ss:[ebp-0x304],0x523446A
00429D25  mov dword ptr ss:[ebp-0x300],0xF709A910
00429D4D  mov dword ptr ss:[ebp-0x2fc],0x3C1D1CE2
00429E90  mov dword ptr ss:[ebp-0x2f8],0xB6D3BBC4
00429EB0  mov dword ptr ss:[ebp-0x2f4],0x5C774D6F
00429ED8  mov dword ptr ss:[ebp-0x2f0],0x97C3C0D5
00429EFB  mov dword ptr ss:[ebp-0x2ec],0x5A7D784C
0042A0B0  mov dword ptr ss:[ebp-0x2e8],0xEEA62890
0042A0CC  mov dword ptr ss:[ebp-0x2e4],0x209B9480
0042A0F4  mov dword ptr ss:[ebp-0x2e0],0xA81E248A
0042A12D  mov dword ptr ss:[ebp-0x2dc],0xC7AE75F0
0042A300  mov dword ptr ss:[ebp-0x2d8],0xA0CC4144
0042A32A  mov dword ptr ss:[ebp-0x2d4],0x8B30B3CC
0042A355  mov dword ptr ss:[ebp-0x2d0],0x7EF8030
0042A380  mov dword ptr ss:[ebp-0x2cc],0x2298F7F5
0042A3A2  mov dword ptr ss:[ebp-0x2c8],0x5A07C2C5
0042A4DB  mov dword ptr ss:[ebp-0x2c4],0xEFF6133C
0042A4FA  mov dword ptr ss:[ebp-0x2c0],0x11333C32
0042A519  mov dword ptr ss:[ebp-0x2bc],0xAF403E34
0042A541  mov dword ptr ss:[ebp-0x2b8],0x54320D71
0042A563  mov dword ptr ss:[ebp-0x2b4],0x808C8818
0042A57F  mov dword ptr ss:[ebp-0x2b0],0x404AFC54
0042A5A1  mov dword ptr ss:[ebp-0x2ac],0x1E1369C3
0042A5C9  mov dword ptr ss:[ebp-0x2a8],0xE1B04DE
0042A719  mov dword ptr ss:[ebp-0x2a4],0x191D9826
0042A73B  mov dword ptr ss:[ebp-0x2a0],0xA68E1D07
0042A763  mov dword ptr ss:[ebp-0x29c],0x93946E0C
0042A78E  mov dword ptr ss:[ebp-0x298],0xCE1A4137
0042A7B0  mov dword ptr ss:[ebp-0x294],0xAD2D146D
0042A7E0  mov dword ptr ss:[ebp-0x290],0x78E38300
0042A7FD  mov dword ptr ss:[ebp-0x28c],0x30384270
0042A9B4  mov dword ptr ss:[ebp-0x288],0x6D0D2C82
0042A9E5  mov dword ptr ss:[ebp-0x284],0x28D69519
0042AB21  mov dword ptr ss:[ebp-0x280],0x2D291D27
0042AB47  mov dword ptr ss:[ebp-0x27c],0x8C48C88F
0042AB6F  mov dword ptr ss:[ebp-0x278],0xA5F71F1E
0042AB97  mov dword ptr ss:[ebp-0x274],0x12FABAF5
0042ABB6  mov dword ptr ss:[ebp-0x270],0x506BDD59
0042ABD8  mov dword ptr ss:[ebp-0x26c],0xC6B5A729
0042AC02  mov dword ptr ss:[ebp-0x268],0xA706BF58
0042AC1E  mov dword ptr ss:[ebp-0x264],0x394CCA03
0042AD5B  mov dword ptr ss:[ebp-0x260],0xA9A2C54D
0042AD7E  mov dword ptr ss:[ebp-0x25c],0x6C7A31A7
0042ADA1  mov dword ptr ss:[ebp-0x258],0x150BD2D0
0042ADBE  mov dword ptr ss:[ebp-0x254],0x572F098D
0042ADDD  mov dword ptr ss:[ebp-0x250],0xCA199F4
0042AE05  mov dword ptr ss:[ebp-0x24c],0x51FA4A28
0042AE2D  mov dword ptr ss:[ebp-0x248],0xCAE0CB80
0042AF85  mov dword ptr ss:[ebp-0x244],0x8AEE8CB7
0042AFA2  mov dword ptr ss:[ebp-0x240],0xE913D084
0042AFCA  mov dword ptr ss:[ebp-0x23c],0xA838DADC
0042AFF4  mov dword ptr ss:[ebp-0x238],0xA016CE6A
0042B022  mov dword ptr ss:[ebp-0x234],0xDCF8C20B
0042B04A  mov dword ptr ss:[ebp-0x230],0xEB120A73
0042B072  mov dword ptr ss:[ebp-0x22c],0xD13BA327
0042B1B6  mov dword ptr ss:[ebp-0x228],0x212D48D6
0042B1D2  mov dword ptr ss:[ebp-0x224],0xBB5230B1
0042B264  mov dword ptr ss:[ebp-0x220],0x33A2635F
0042B286  mov dword ptr ss:[ebp-0x21c],0x66C07DE7
0042B2A8  mov dword ptr ss:[ebp-0x218],0x5A2752C
0042B413  mov dword ptr ss:[ebp-0x214],0xD7C9790A
0042B435  mov dword ptr ss:[ebp-0x210],0x4CD65A53
0042B451  mov dword ptr ss:[ebp-0x20c],0x45FC958
0042B479  mov dword ptr ss:[ebp-0x208],0xF055EE9F
0042B49E  mov dword ptr ss:[ebp-0x204],0x7551D912
0042B4CC  mov dword ptr ss:[ebp-0x200],0x759254D8
0042B4F7  mov dword ptr ss:[ebp-0x1fc],0x75A1176E
0042B673  mov dword ptr ss:[ebp-0x1f8],0x7638F796
0042B692  mov dword ptr ss:[ebp-0x1f4],0x52317225
0042B6AE  mov dword ptr ss:[ebp-0x1f0],0x80071E4C
0042B6D6  mov dword ptr ss:[ebp-0x1ec],0x97B6BADD
0042B6FA  mov dword ptr ss:[ebp-0x1e8],0x638A5A3F
0042B717  mov dword ptr ss:[ebp-0x1e4],0xA8194395
0042B739  mov dword ptr ss:[ebp-0x1e0],0xB26A9073
0042B8BF  mov dword ptr ss:[ebp-0x1dc],0xE81C276E
0042B8EC  mov dword ptr ss:[ebp-0x1d8],0x1DC0EF49
0042B915  mov dword ptr ss:[ebp-0x1d4],0x8A41974A
0042B931  mov dword ptr ss:[ebp-0x1d0],0x695DB17
0042B94E  mov dword ptr ss:[ebp-0x1cc],0xE1EFD927
0042B96A  mov dword ptr ss:[ebp-0x1c8],0x9DD20533
0042B986  mov dword ptr ss:[ebp-0x1c4],0x98FDCA1B
0042B9A8  mov dword ptr ss:[ebp-0x1c0],0x83CEDCB7
0042BADA  mov dword ptr ss:[ebp-0x1bc],0x15FD30F4
0042BAF6  mov dword ptr ss:[ebp-0x1b8],0x6E9783CB
0042BB24  mov dword ptr ss:[ebp-0x1b4],0x184CF4B5
0042BB9E  mov dword ptr ss:[ebp-0x1b0],0xD67F09
0042BD10  mov dword ptr ss:[ebp-0x1ac],0xF6FDEC91
0042BD2C  mov dword ptr ss:[ebp-0x1a8],0x2FA94CAB
0042BD4E  mov dword ptr ss:[ebp-0x1a4],0x158E0D8D
0042BD6A  mov dword ptr ss:[ebp-0x1a0],0x716D805A
0042BDA8  mov dword ptr ss:[ebp-0x19c],0x504A3730
0042BDC7  mov dword ptr ss:[ebp-0x198],0xC430466A
0042BDF3  mov dword ptr ss:[ebp-0x194],0x3146C7C2
0042BF1B  mov dword ptr ss:[ebp-0x190],0x657F6984
0042BF37  mov dword ptr ss:[ebp-0x18c],0x8BB7C209
0042BF55  mov dword ptr ss:[ebp-0x188],0x17E85248
0042BF7A  mov dword ptr ss:[ebp-0x184],0xA17B7497
0042BF9D  mov dword ptr ss:[ebp-0x180],0x7DB7818D
0042BFBC  mov dword ptr ss:[ebp-0x17c],0xDDDA6F8C
0042BFDB  mov dword ptr ss:[ebp-0x178],0x72CE21C2
0042C004  mov dword ptr ss:[ebp-0x174],0xFE8DC77D
0042C151  mov dword ptr ss:[ebp-0x170],0xF2753E52
0042C17B  mov dword ptr ss:[ebp-0x16c],0xB744E8CF
0042C19D  mov dword ptr ss:[ebp-0x168],0x7336D163
0042C1CB  mov dword ptr ss:[ebp-0x164],0xEC13B971
0042C1ED  mov dword ptr ss:[ebp-0x160],0x7B9D9E21
0042C21D  mov dword ptr ss:[ebp-0x15c],0x44039E99
0042C38A  mov dword ptr ss:[ebp-0x158],0x94B10FCE
0042C3C2  mov dword ptr ss:[ebp-0x154],0xCFAA6B63
0042C3E5  mov dword ptr ss:[ebp-0x150],0xE0728868
0042C401  mov dword ptr ss:[ebp-0x14c],0xC26CB993
0042C429  mov dword ptr ss:[ebp-0x148],0x31FAFD70
0042C445  mov dword ptr ss:[ebp-0x144],0x95232A9E
0042C46D  mov dword ptr ss:[ebp-0x140],0xD33C0696
0042C5E4  mov dword ptr ss:[ebp-0x13c],0xD702A4FF
0042C600  mov dword ptr ss:[ebp-0x138],0x29428C86
0042C628  mov dword ptr ss:[ebp-0x134],0xB24A4A80
0042C646  mov dword ptr ss:[ebp-0x130],0xC118C866
0042C663  mov dword ptr ss:[ebp-0x12c],0xF6686BA3
0042C67F  mov dword ptr ss:[ebp-0x128],0xDD412631
0042C69F  mov dword ptr ss:[ebp-0x124],0x380B039C
0042C6C7  mov dword ptr ss:[ebp-0x120],0xF5FE454E
0042C805  mov dword ptr ss:[ebp-0x11c],0x5A65E0CA
0042C821  mov dword ptr ss:[ebp-0x118],0x526EDEF
0042C844  mov dword ptr ss:[ebp-0x114],0xE336904A
0042C861  mov dword ptr ss:[ebp-0x110],0xFD79DCE4
0042C889  mov dword ptr ss:[ebp-0x10c],0x2580BBF4
0042C8A5  mov dword ptr ss:[ebp-0x108],0x6D69FB55
0042C8C7  mov dword ptr ss:[ebp-0x104],0x32F17AF1
0042C9FB  mov dword ptr ss:[ebp-0x100],0x912EF93E
0042CA8F  mov dword ptr ss:[ebp-0xfc],0x1CC0A0D1
0042CAC6  mov dword ptr ss:[ebp-0xf8],0xEE7CE5D5
0042CAE8  mov dword ptr ss:[ebp-0xf4],0x11CFF33B
0042CBF9  mov dword ptr ss:[ebp-0xf0],0xE550F118
0042CC18  mov dword ptr ss:[ebp-0xec],0xE3C2780C
0042CCA5  mov dword ptr ss:[ebp-0xe8],0xF26FCB75
0042CCC7  mov dword ptr ss:[ebp-0xe4],0x36486621
0042CE23  mov dword ptr ss:[ebp-0xe0],0x5D2091C2
0042CE45  mov dword ptr ss:[ebp-0xdc],0x76B14D7E
0042CE6E  mov dword ptr ss:[ebp-0xd8],0x8695CB52
0042CE8A  mov dword ptr ss:[ebp-0xd4],0x8E74DBFD
0042CEAA  mov dword ptr ss:[ebp-0xd0],0x908E5FED
0042CEDC  mov dword ptr ss:[ebp-0xcc],0x86908908
0042CF01  mov dword ptr ss:[ebp-0xc8],0xC61F8891
0042D045  mov dword ptr ss:[ebp-0xc4],0x45BABFF4
0042D06D  mov dword ptr ss:[ebp-0xc0],0x7A4877B7
0042D090  mov dword ptr ss:[ebp-0xbc],0x79DAD2A9
0042D0B2  mov dword ptr ss:[ebp-0xb8],0x8FEEC7DD
0042D0D0  mov dword ptr ss:[ebp-0xb4],0xB0E75CAE
0042D0FA  mov dword ptr ss:[ebp-0xb0],0x96700646
0042D122  mov dword ptr ss:[ebp-0xac],0x87E38C3E
0042D150  mov dword ptr ss:[ebp-0xa8],0x7DFDC83E
0042D28C  mov dword ptr ss:[ebp-0xa4],0x71410957
0042D2B2  mov dword ptr ss:[ebp-0xa0],0xC8F5E28C
0042D2D4  mov dword ptr ss:[ebp-0x9c],0x7E123B5E
0042D2F0  mov dword ptr ss:[ebp-0x98],0xDDA8B33B
0042D30C  mov dword ptr ss:[ebp-0x94],0xE5EB27FD
0042D334  mov dword ptr ss:[ebp-0x90],0x2AF07AB2
0042D35A  mov dword ptr ss:[ebp-0x8c],0x6851F8C3
0042D48D  mov dword ptr ss:[ebp-0x88],0xF1F6EAAD
0042D4B0  mov dword ptr ss:[ebp-0x84],0x10694491
0042D4E4  mov dword ptr ss:[ebp-0x80],0x994F65A5
0042D50A  mov dword ptr ss:[ebp-0x7c],0xC5600713
0042D52C  mov dword ptr ss:[ebp-0x78],0x9046E03B
0042D54E  mov dword ptr ss:[ebp-0x74],0x95995388
0042D576  mov dword ptr ss:[ebp-0x70],0xBD9B5C78
0042D6B3  mov dword ptr ss:[ebp-0x6c],0xA4E01373
0042D6DB  mov dword ptr ss:[ebp-0x68],0x5A697CE8
0042D700  mov dword ptr ss:[ebp-0x64],0x89C5E8A6
0042D728  mov dword ptr ss:[ebp-0x60],0xCC08287E
0042D750  mov dword ptr ss:[ebp-0x5c],0x8B6A4D34
0042D77C  mov dword ptr ss:[ebp-0x58],0xAF54B6F0
0042D7A7  mov dword ptr ss:[ebp-0x54],0xE7326CB5
0042D8F8  mov dword ptr ss:[ebp-0x50],0xBD014C4B
0042D965  mov dword ptr ss:[ebp-0x4c],0xC5F603C0
0042D98D  mov dword ptr ss:[ebp-0x48],0xD85AA94E
0042D9B5  mov dword ptr ss:[ebp-0x44],0xE587F097
0042D9DD  mov dword ptr ss:[ebp-0x40],0xB6EBC370
0042DB09  mov dword ptr ss:[ebp-0x3c],0x52951D88
0042DB2B  mov dword ptr ss:[ebp-0x38],0x851DF091
0042DB4D  mov dword ptr ss:[ebp-0x34],0x51B4EA9D
0042DB58  mov ecx,0x4
00000000  shl ecx,0x6
0042DB91  mov edx,dword ptr ss:[ebp+ecx-0x41C]      ; EDX=EB0B932A
0042DD3F  mov dword ptr ss:[ebp-0x10],edx
0042DD46  mov eax,0x4                               ; EAX=00000004
0042DDB5  imul ecx,eax,0x44                         ; ECX=00000110
0042DDB8  mov edx,dword ptr ss:[ebp+ecx-0x41C]      ; EDX=B4FB26B3
0042DDD6  mov dword ptr ss:[ebp-0x14],edx
0042DDDD  mov eax,0x4
0042DDE4  imul ecx,eax,0x0                          ; ECX=00000000
0042DF2B  mov edx,dword ptr ss:[ebp+0x8]; EDX=0018FD3C
0042DF39  mov eax,dword ptr ds:[edx+ecx]            ; EAX=12345678
0042DF4D  mov dword ptr ss:[ebp-0x30],eax
0042DF55  mov ecx,0x4                               ; ECX=00000004
0042DF9E  mov edx,dword ptr ss:[ebp+0x8]
0042DFA5  mov eax,dword ptr ds:[edx+ecx]            ; EAX=11223344
0042DFBF  mov dword ptr ss:[ebp-0x2c],eax
0042DFC7  mov ecx,0x4
0042DFCD  imul edx,ecx,0x0                          ; EDX=00000000
0042E0F6  mov eax,dword ptr ss:[ebp+0xc]; EAX=004B1000
0042E0FD  mov ecx,dword ptr ds:[eax+edx]            ; ECX=20656E4F
0042E117  mov dword ptr ss:[ebp-0x20],ecx
0042E11E  mov edx,0x4                               ; EDX=00000004
0042E178  mov eax,dword ptr ss:[ebp+0xc]
0042E17F  mov ecx,dword ptr ds:[eax+edx]            ; ECX=6C616873
0042E199  mov dword ptr ss:[ebp-0x18],ecx
0042E1A0  mov edx,0x4
0042E1A5  shl edx,1                                 ; EDX=00000008
0042E2FB  mov eax,dword ptr ss:[ebp+0xc]
0042E302  mov ecx,dword ptr ds:[eax+edx]            ; ECX=7473206C
0042E322  mov dword ptr ss:[ebp-0x24],ecx
0042E329  mov edx,0x4                               ; EDX=00000004
0042E32E  imul eax,edx,0x3                          ; EAX=0000000C
0042E34A  mov ecx,dword ptr ss:[ebp+0xc]; ECX=004B1000
0042E351  mov edx,dword ptr ds:[ecx+eax]            ; EDX=20646E61
0042E371  mov dword ptr ss:[ebp-0x28],edx
0042E395  mov eax,dword ptr ss:[ebp-0xc]; EAX=00000000
0042E3AD  add eax,dword ptr ss:[ebp-0x1c]            ; EAX=89ABCDEF
0042E3CE  mov dword ptr ss:[ebp-0xc],eax
0042E3EC  mov ecx,dword ptr ss:[ebp-0x8] ; ECX=11223344
00000000  shl ecx,0x4
0042E6F9  add ecx,dword ptr ss:[ebp-0x20]            ; ECX=3288A28F
0042E716  mov edx,dword ptr ss:[ebp-0x8]; EDX=11223344
0042E734  add edx,dword ptr ss:[ebp-0xc]            ; EDX=9ACE0133
0042E738  xor ecx,edx                               ; ECX=A846A3BC
0042E74B  mov eax,dword ptr ss:[ebp-0x8]; EAX=11223344
00000000  shr eax,0x5
0042E9D0  add eax,dword ptr ss:[ebp-0x18]            ; EAX=6CEA7A0D
0042E9D4  xor ecx,eax                               ; ECX=C4ACD9B1
0042E9F3  add ecx,dword ptr ss:[ebp-0x4]            ; ECX=D6E13029
0042EB33  mov dword ptr ss:[ebp-0x4],ecx
0042EB57  mov ecx,dword ptr ss:[ebp-0x4]
00000000  shl ecx,0x4
0042EB90  add ecx,dword ptr ss:[ebp-0x24]            ; ECX=E28622FC
0042EBA5  mov edx,dword ptr ss:[ebp-0x4]; EDX=D6E13029
0042EBC9  add edx,dword ptr ss:[ebp-0xc]            ; EDX=608CFE18
0042EBCD  xor ecx,edx                               ; ECX=820ADCE4
0042EBE1  mov eax,dword ptr ss:[ebp-0x4]; EAX=D6E13029
00000000  shr eax,0x5
0042ED64  add eax,dword ptr ss:[ebp-0x28]            ; EAX=271B77E2
0042ED68  xor ecx,eax                               ; ECX=A511AB06
0042ED87  add ecx,dword ptr ss:[ebp-0x8]            ; ECX=B633DE4A
0042EDA8  mov dword ptr ss:[ebp-0x8],ecx
0042EF4B  mov ecx,dword ptr ss:[ebp+0x10]; ECX=67452301
0042EF5B  not ecx                                   ; ECX=98BADCFE
0042EF7D  add ecx,0x3eccd87b                              ; ECX=D787B579
00000000  shl ecx,0x7
0042EFE1  mov edx,dword ptr ss:[ebp-0x4]; EDX=D6E13029
0042F124  sub edx,ecx                               ; EDX=130673A9
0042F137  mov dword ptr ss:[ebp-0x4],edx
0042F13E  mov eax,0x548A46D1                        ; EAX=548A46D1
0042F154  sub eax,dword ptr ss:[ebp+0x14]            ; EAX=64BC9B48
00000000  shr eax,0x9
0042F1A3  mov ecx,dword ptr ss:[ebp-0x8]  ; ECX=B633DE4A
0042F1AA  sub ecx,eax                               ; ECX=B6017FFD
0042F1C0  mov dword ptr ss:[ebp-0x8],ecx
0042F1C8  mov edx,0x4                               ; EDX=00000004
0042F2CD  imul eax,edx,0x0                          ; EAX=00000000
0042F2D1  mov ecx,0x4                               ; ECX=00000004
0042F2D6  imul edx,ecx,0x3                          ; EDX=0000000C
0042F2F0  mov ecx,dword ptr ss:[ebp+0x8] ; ECX=0018FD3C
0042F2F9  mov eax,dword ptr ds:[ecx+eax]            ; EAX=12345678
0042F30E  mov ecx,dword ptr ss:[ebp+0xc] ; ECX=004B1000
0042F316  add eax,dword ptr ds:[ecx+edx]            ; EAX=3298C4D9
0042F330  sub eax,dword ptr ss:[ebp+0x20]            ; EAX=BF18AE6A
00000000  shr eax,0x5
0042F4A6  add eax,dword ptr ss:[ebp-0x10]            ; EAX=F104589D
0042F4C1  mov dword ptr ss:[ebp-0x10],eax
0042F4C8  mov edx,0x4                               ; EDX=00000004
0042F4CD  imul eax,edx,0x0                          ; EAX=00000000
0042F4FD  mov ecx,dword ptr ss:[ebp+0x8] ; ECX=0018FD3C
0042F505  mov edx,dword ptr ds:[ecx+eax]            ; EDX=12345678
0042F568  sub edx,dword ptr ss:[ebp+0x34]            ; EDX=AE748E8E
0042F6BF  add edx,dword ptr ss:[ebp+0x14]            ; EDX=9E423A17
00000000  shl edx,0x6
0042F761  mov eax,dword ptr ss:[ebp-0x14]; EAX=B4FB26B3
0042F76B  sub eax,edx                               ; EAX=246CA0F3
0042F881  mov dword ptr ss:[ebp-0x14],eax
0042F888  mov ecx,0x4                               ; ECX=00000004
0042F88D  imul edx,ecx,0x0                          ; EDX=00000000
0042F890  mov eax,0x4                               ; EAX=00000004
0042F915  mov ecx,dword ptr ss:[ebp+0xc]; ECX=004B1000
0042F91C  mov edx,dword ptr ds:[ecx+edx]            ; EDX=20656E4F
0042FA5B  mov ecx,dword ptr ss:[ebp+0x8]; ECX=0018FD3C
0042FA62  add edx,dword ptr ds:[ecx+eax]            ; EDX=3187A193
0042FA79  sub edx,dword ptr ss:[ebp+0x24]            ; EDX=E872EEDA
00000000  shr edx,0x5
0042FAC7  mov eax,dword ptr ss:[ebp-0x30]; EAX=12345678
0042FAD0  sub eax,edx                               ; EAX=0AF0BF02
0042FAE5  mov dword ptr ss:[ebp-0x30],eax
0042FB0C  mov ecx,dword ptr ss:[ebp-0xc]; ECX=89ABCDEF
0042FB2D  add ecx,dword ptr ss:[ebp-0x1c]            ; ECX=13579BDE
0042FC60  mov dword ptr ss:[ebp-0xc],ecx
0042FC7E  mov edx,dword ptr ss:[ebp-0x8]; EDX=B6017FFD
00000000  shl edx,0x4
0042FCCF  add edx,dword ptr ss:[ebp-0x20]            ; EDX=807D6E1F
0042FCF1  mov eax,dword ptr ss:[ebp-0x8]; EAX=B6017FFD
0042FD0C  add eax,dword ptr ss:[ebp-0xc]            ; EAX=C9591BDB
0042FD14  xor edx,eax                               ; EDX=492475C4
0042FE57  mov ecx,dword ptr ss:[ebp-0x8]; ECX=B6017FFD
00000000  shr ecx,0x5
0042FEC6  add ecx,dword ptr ss:[ebp-0x18]            ; ECX=72117472
0042FECA  xor edx,ecx                               ; EDX=3B3501B6
0042FEDD  add edx,dword ptr ss:[ebp-0x4]            ; EDX=4E3B755F
0042FEF8  mov dword ptr ss:[ebp-0x4],edx
0042FF20  mov edx,dword ptr ss:[ebp-0x4]
00000000  shl edx,0x4
004300A3  add edx,dword ptr ss:[ebp-0x24]            ; EDX=582A765C
004300B8  mov eax,dword ptr ss:[ebp-0x4]; EAX=4E3B755F
004300D0  add eax,dword ptr ss:[ebp-0xc]            ; EAX=6193113D
004300DA  xor edx,eax                               ; EDX=39B96761
004300F3  mov ecx,dword ptr ss:[ebp-0x4]; ECX=4E3B755F
00000000  shr ecx,0x5
004302DF  add ecx,dword ptr ss:[ebp-0x28]            ; ECX=22D64A0B
004302EA  xor edx,ecx                               ; EDX=1B6F2D6A
004302FE  add edx,dword ptr ss:[ebp-0x8]            ; EDX=D170AD67
00430456  mov dword ptr ss:[ebp-0x8],edx
0043045D  mov edx,0xFBB23022                        ; EDX=FBB23022
0043047F  sub edx,dword ptr ss:[ebp+0x18]            ; EDX=62F75324
00000000  shl edx,0x5
0043063C  mov eax,dword ptr ss:[ebp-0x4]; EAX=4E3B755F
00430643  sub eax,edx                               ; EAX=EF5110DF
0043065C  mov dword ptr ss:[ebp-0x4],eax
0043067A  mov ecx,dword ptr ss:[ebp+0x1c]; ECX=10325476
00430698  sub ecx,0x100ca839                              ; ECX=0025AC3D
00000000  shr ecx,0x6
004308CC  or ecx,dword ptr ss:[ebp+0x28]            ; ECX=1724D6F7
004308E6  mov edx,dword ptr ss:[ebp-0x8]; EDX=D170AD67
004308EF  sub edx,ecx                               ; EDX=BA4BD670
00430909  mov dword ptr ss:[ebp-0x8],edx
00430916  mov eax,0x4                               ; EAX=00000004
0043091B  imul ecx,eax,0x0                          ; ECX=00000000
00430A43  mov edx,0x4                               ; EDX=00000004
00430A89  mov eax,dword ptr ss:[ebp+0xc]; EAX=004B1000
00430A90  mov ecx,dword ptr ds:[eax+ecx]            ; ECX=20656E4F
00430AAA  mov eax,dword ptr ss:[ebp+0x8]; EAX=0018FD3C
00430AB2  add ecx,dword ptr ds:[eax+edx]            ; ECX=3187A193
00430AD5  sub ecx,dword ptr ss:[ebp+0x34]            ; ECX=CDC7D9A9
00000000  shr ecx,0x5
00430C2B  add ecx,dword ptr ss:[ebp-0x10]            ; ECX=F772976A
00430C40  mov dword ptr ss:[ebp-0x10],ecx
00430C47  mov ecx,0x4                               ; ECX=00000004
00430C4C  imul edx,ecx,0x0                          ; EDX=00000000
00430C60  mov eax,dword ptr ss:[ebp+0x8]
00430C67  mov ecx,dword ptr ds:[eax+edx]            ; ECX=12345678
00430C81  sub ecx,dword ptr ss:[ebp+0x34]            ; ECX=AE748E8E
00430C9C  add ecx,dword ptr ss:[ebp+0x14]            ; ECX=9E423A17
00000000  shl ecx,0x6
00430E1C  mov edx,dword ptr ss:[ebp-0x14] ; EDX=246CA0F3
00430E2F  sub edx,ecx                               ; EDX=93DE1B33
00430E4E  mov dword ptr ss:[ebp-0x14],edx
00430E66  mov eax,dword ptr ss:[ebp-0xc]; EAX=13579BDE
00430E87  add eax,dword ptr ss:[ebp-0x1c]            ; EAX=9D0369CD
00430E9C  mov dword ptr ss:[ebp-0xc],eax
00430EC0  mov ecx,dword ptr ss:[ebp-0x8]; ECX=BA4BD670
00000000  shl ecx,0x4
00431036  add ecx,dword ptr ss:[ebp-0x20]            ; ECX=C522D54F
00431051  mov edx,dword ptr ss:[ebp-0x8]; EDX=BA4BD670
004310BA  add edx,dword ptr ss:[ebp-0xc]            ; EDX=574F403D
004310BE  xor ecx,edx                               ; ECX=926D9572
004310D1  mov eax,dword ptr ss:[ebp-0x8] ; EAX=BA4BD670
00000000  shr eax,0x5
00431242  add eax,dword ptr ss:[ebp-0x18]            ; EAX=7233C726
00431247  xor ecx,eax                               ; ECX=E05E5254
00431260  add ecx,dword ptr ss:[ebp-0x4]            ; ECX=CFAF6333
00431281  mov dword ptr ss:[ebp-0x4],ecx
00431299  mov ecx,dword ptr ss:[ebp-0x4]
00000000  shl ecx,0x4
0043164B  add ecx,dword ptr ss:[ebp-0x24]            ; ECX=6F69539C
00431667  mov edx,dword ptr ss:[ebp-0x4] ; EDX=CFAF6333
0043168B  add edx,dword ptr ss:[ebp-0xc]            ; EDX=6CB2CD00
00431691  xor ecx,edx                               ; ECX=03DB9E9C
004316A4  mov eax,dword ptr ss:[ebp-0x4] ; EAX=CFAF6333
00000000  shr eax,0x5
0043183C  add eax,dword ptr ss:[ebp-0x28]            ; EAX=26E1E97A
00431846  xor ecx,eax                               ; ECX=253A77E6
00431865  add ecx,dword ptr ss:[ebp-0x8]            ; ECX=DF864E56
0043187A  mov dword ptr ss:[ebp-0x8],ecx
00431887  mov ecx,0xF1E85296                        ; ECX=F1E85296
004318A3  sub ecx,dword ptr ss:[ebp+0x1c]            ; ECX=E1B5FE20
00000000  shr ecx,0x9
00431A7D  mov edx,dword ptr ss:[ebp-0x4]; EDX=CFAF6333
00431A84  sub edx,ecx                               ; EDX=CF3E8834
00431AE8  mov dword ptr ss:[ebp-0x4],edx
00431AEF  mov eax,0x8A6F6B3A                        ; EAX=8A6F6B3A
00431B0B  sub eax,dword ptr ss:[ebp+0x10]            ; EAX=232A4839
00000000  shl eax,0x4
00431CB3  mov ecx,dword ptr ss:[ebp-0x8]; ECX=DF864E56
00431CBA  sub ecx,eax                               ; ECX=ACE1CAC6
00431CCD  mov dword ptr ss:[ebp-0x8],ecx
00431CD4  mov edx,0x4                               ; EDX=00000004
00431CD9  imul eax,edx,0x0                          ; EAX=00000000
00431E74  mov edx,dword ptr ss:[ebp+0x8]; EDX=0018FD3C
00431E7B  mov eax,dword ptr ds:[edx+eax]            ; EAX=12345678
00431E7E  shl eax,cl                                ; EAX=9E000000
00000000  shr eax,0x7
00431ECF  add eax,dword ptr ss:[ebp-0x10]            ; EAX=F8AE976A
00431FFF  mov dword ptr ss:[ebp-0x10],eax
00432006  mov ecx,0x4                               ; ECX=00000004
0043204B  mov edx,dword ptr ss:[ebp+0x8]
00432059  mov eax,dword ptr ds:[edx+ecx]            ; EAX=11223344
00432079  sub eax,dword ptr ss:[ebp+0x34]            ; EAX=AD626B5A
004320A1  add eax,dword ptr ss:[ebp+0x28]            ; EAX=C486AE31
00000000  shl eax,0x5
0043223F  mov ecx,dword ptr ss:[ebp-0x14] ; ECX=93DE1B33
0043229E  sub ecx,eax                               ; ECX=03085513
004322BD  mov dword ptr ss:[ebp-0x14],ecx
004322D5  mov edx,dword ptr ss:[ebp-0xc]; EDX=9D0369CD
004323E6  add edx,dword ptr ss:[ebp-0x1c]            ; EDX=26AF37BC
00432408  mov dword ptr ss:[ebp-0xc],edx
00432426  mov eax,dword ptr ss:[ebp-0x8]; EAX=ACE1CAC6
00000000  shl eax,0x4
0043269E  add eax,dword ptr ss:[ebp-0x20]            ; EAX=EE821AAF
004327F6  mov ecx,dword ptr ss:[ebp-0x8]; ECX=ACE1CAC6
0043280E  add ecx,dword ptr ss:[ebp-0xc]            ; ECX=D3910282
00432813  xor eax,ecx                               ; EAX=3D13182D
0043282C  mov edx,dword ptr ss:[ebp-0x8]; EDX=ACE1CAC6
00000000  shr edx,0x5
00432888  add edx,dword ptr ss:[ebp-0x18]            ; EDX=71C876C9
00432891  xor eax,edx                               ; EAX=4CDB6EE4
004328AA  add eax,dword ptr ss:[ebp-0x4]            ; EAX=1C19F718
004329D6  mov dword ptr ss:[ebp-0x4],eax
00432A04  mov eax,dword ptr ss:[ebp-0x4]
00000000  shl eax,0x4
00432E4F  add eax,dword ptr ss:[ebp-0x24]            ; EAX=361291EC
00432E71  mov ecx,dword ptr ss:[ebp-0x4]; ECX=1C19F718
00432E90  add ecx,dword ptr ss:[ebp-0xc]            ; ECX=42C92ED4
00432E97  xor eax,ecx                               ; EAX=74DBBF38
00432EAA  mov edx,dword ptr ss:[ebp-0x4]; EDX=1C19F718
00000000  shr edx,0x5
0043321F  add edx,dword ptr ss:[ebp-0x28]            ; EDX=21453E19
00433223  xor eax,edx                               ; EAX=559E8121
0043323E  add eax,dword ptr ss:[ebp-0x8]            ; EAX=02804BE7
0043325F  mov dword ptr ss:[ebp-0x8],eax
00433277  mov eax,dword ptr ss:[ebp+0x14]; EAX=EFCDAB89
0043327E  not eax                                   ; EAX=10325476
004332A0  sub eax,0x6b9a2d27                              ; EAX=A498274F
00000000  shl eax,0x8
0043341F  mov ecx,dword ptr ss:[ebp-0x4]; ECX=1C19F718
00433426  sub ecx,eax                               ; ECX=83F2A818
00433439  mov dword ptr ss:[ebp-0x4],ecx
00433451  mov edx,dword ptr ss:[ebp+0x1c]; EDX=10325476
00433461  lea eax,dword ptr ds:[edx*8+0xB4915A30]   ; EAX=3623FDE0
00433479  mov ecx,dword ptr ss:[ebp-0x8]; ECX=02804BE7
00433480  sub ecx,eax                               ; ECX=CC5C4E07
004334A0  mov dword ptr ss:[ebp-0x8],ecx
004334A7  mov edx,0x4                               ; EDX=00000004
004335C3  imul eax,edx,0x0                          ; EAX=00000000
004335C6  mov ecx,0x4                               ; ECX=00000004
004335CB  imul edx,ecx,0x3                          ; EDX=0000000C
004335E2  mov ecx,dword ptr ss:[ebp+0x8]; ECX=0018FD3C
004335EB  mov eax,dword ptr ds:[ecx+eax]            ; EAX=12345678
00433601  mov ecx,dword ptr ss:[ebp+0xc] ; ECX=004B1000
0043360E  add eax,dword ptr ds:[ecx+edx]            ; EAX=3298C4D9
00433628  sub eax,dword ptr ss:[ebp+0x20]            ; EAX=BF18AE6A
00000000  shr eax,0x5
00433661  add eax,dword ptr ss:[ebp-0x14]            ; EAX=09011A86
00433682  mov dword ptr ss:[ebp-0x14],eax
00433689  mov edx,0x4                               ; EDX=00000004
00433794  imul eax,edx,0x0                          ; EAX=00000000
004337B1  mov ecx,dword ptr ss:[ebp+0x8]; ECX=0018FD3C
004337B8  mov edx,dword ptr ds:[ecx+eax]            ; EDX=12345678
00433829  sub edx,dword ptr ss:[ebp+0x34]            ; EDX=AE748E8E
00433844  add edx,dword ptr ss:[ebp+0x14]            ; EDX=9E423A17
00000000  shl edx,0x6
0043398E  mov eax,dword ptr ss:[ebp-0x2c]; EAX=11223344
00433996  sub eax,edx                               ; EAX=8093AD84
004339B5  mov dword ptr ss:[ebp-0x2c],eax
004339DC  mov ecx,dword ptr ss:[ebp-0xc]; ECX=26AF37BC
004339F4  add ecx,dword ptr ss:[ebp-0x1c]            ; ECX=B05B05AB
00433A48  mov dword ptr ss:[ebp-0xc],ecx
00433B90  mov edx,dword ptr ss:[ebp-0x8]; EDX=CC5C4E07
00000000  shl edx,0x4
00433BE7  add edx,dword ptr ss:[ebp-0x20]            ; EDX=E62A4EBF
00433C02  mov eax,dword ptr ss:[ebp-0x8] ; EAX=CC5C4E07
00433C20  add eax,dword ptr ss:[ebp-0xc]            ; EAX=7CB753B2
00433C2A  xor edx,eax                               ; EDX=9A9D1D0D
00433C43  mov ecx,dword ptr ss:[ebp-0x8] ; ECX=CC5C4E07
00000000  shr ecx,0x5
00433E6D  add ecx,dword ptr ss:[ebp-0x18]            ; ECX=72C44AE3
00433E71  xor edx,ecx                               ; EDX=E85957EE
00433F89  add edx,dword ptr ss:[ebp-0x4]            ; EDX=6C4C0006
00433FA1  mov dword ptr ss:[ebp-0x4],edx
00433FBF  mov edx,dword ptr ss:[ebp-0x4]
00000000  shl edx,0x4
0043402A  add edx,dword ptr ss:[ebp-0x24]            ; EDX=393320CC
00434152  mov eax,dword ptr ss:[ebp-0x4] ; EAX=6C4C0006
0043416A  add eax,dword ptr ss:[ebp-0xc]            ; EAX=1CA705B1
0043416E  xor edx,eax                               ; EDX=2594257D
00434187  mov ecx,dword ptr ss:[ebp-0x4] ; ECX=6C4C0006
00000000  shr ecx,0x5
0043436B  add ecx,dword ptr ss:[ebp-0x28]            ; ECX=23C6CE61
00434375  xor edx,ecx                               ; EDX=0652EB1C
0043438E  add edx,dword ptr ss:[ebp-0x8]            ; EDX=D2AF3923
004343A3  mov dword ptr ss:[ebp-0x8],edx
004343C9  mov edx,dword ptr ss:[ebp+0x18] ; EDX=98BADCFE
004343E7  sub edx,0x1b9e4315                              ; EDX=7D1C99E9
00000000  shr edx,0x2
00434761  and edx,dword ptr ss:[ebp-0x18]           ; EDX=0C412072
00434775  mov eax,dword ptr ss:[ebp-0x4] ; EAX=6C4C0006
0043477C  sub eax,edx                               ; EAX=600ADF94
00434798  mov dword ptr ss:[ebp-0x4],eax
004347A0  mov ecx,0xC2CFE269                        ; ECX=C2CFE269
004347C3  sub ecx,dword ptr ss:[ebp+0x10]            ; ECX=5B8ABF68
00000000  shr ecx,0x5
004349B8  mov edx,dword ptr ss:[ebp-0x8] ; EDX=D2AF3923
004349C0  sub edx,ecx                               ; EDX=CFD2E328
004349E5  mov dword ptr ss:[ebp-0x8],edx
00434A03  mov eax,dword ptr ss:[ebp-0xc]; EAX=B05B05AB
00434A1B  add eax,dword ptr ss:[ebp-0x1c]            ; EAX=3A06D39A
00434A31  mov dword ptr ss:[ebp-0xc],eax
00434A55  mov ecx,dword ptr ss:[ebp-0x8]; ECX=CFD2E328
00000000  shl ecx,0x4
00434DED  add ecx,dword ptr ss:[ebp-0x20]            ; ECX=1D93A0CF
00434E02  mov edx,dword ptr ss:[ebp-0x8]
00434E1A  add edx,dword ptr ss:[ebp-0xc]            ; EDX=09D9B6C2
00434E1E  xor ecx,edx                               ; ECX=144A160D
00434F7F  mov eax,dword ptr ss:[ebp-0x8]; EAX=CFD2E328
00000000  shr eax,0x5
00434FDF  add eax,dword ptr ss:[ebp-0x18]            ; EAX=72DFFF8C
00434FE3  xor ecx,eax                               ; ECX=6695E981
0043510E  add ecx,dword ptr ss:[ebp-0x4]            ; ECX=C6A0C915
0043512C  mov dword ptr ss:[ebp-0x4],ecx
00435153  mov ecx,dword ptr ss:[ebp-0x4]
00000000  shl ecx,0x4
004351B5  add ecx,dword ptr ss:[ebp-0x24]            ; ECX=DE7FB1BC
004352D2  mov edx,dword ptr ss:[ebp-0x4]; EDX=C6A0C915
004352EC  add edx,dword ptr ss:[ebp-0xc]            ; EDX=00A79CAF
004352F0  xor ecx,edx                               ; ECX=DED82D13
00435303  mov eax,dword ptr ss:[ebp-0x4]; EAX=C6A0C915
00000000  shr eax,0x5
00435350  add eax,dword ptr ss:[ebp-0x28]            ; EAX=269974A9
0043535A  xor ecx,eax                               ; ECX=F84159BA
00435373  add ecx,dword ptr ss:[ebp-0x8]            ; ECX=C8143CE2
00435396  mov dword ptr ss:[ebp-0x8],ecx
0043539E  mov ecx,0xD8D8F314                        ; ECX=D8D8F314
004354C0  sub ecx,dword ptr ss:[ebp+0x28]            ; ECX=C1B4B03D
00000000  shl ecx,0x5
00435505  mov edx,dword ptr ss:[ebp-0x4]; EDX=C6A0C915
0043550D  sub edx,ecx                               ; EDX=900AC175
00435520  mov dword ptr ss:[ebp-0x4],edx
00435527  mov eax,0xD4C61A57                        ; EAX=D4C61A57
00435549  sub eax,dword ptr ss:[ebp+0x14]            ; EAX=E4F86ECE
00000000  shr eax,0x6
00435703  mov ecx,dword ptr ss:[ebp-0x8]; ECX=C8143CE2
0043570A  sub ecx,eax                               ; ECX=C4805B27
0043572D  mov dword ptr ss:[ebp-0x8],ecx
00435734  mov edx,0x4                               ; EDX=00000004
0043573B  imul eax,edx,0x0                          ; EAX=00000000
0043573F  mov ecx,0x4                               ; ECX=00000004
0043590A  mov edx,dword ptr ss:[ebp+eax-0x41C]      ; EDX=6ACC9ABE
0043592F  mov eax,dword ptr ss:[ebp+0x8]; EAX=0018FD3C
00435936  add edx,dword ptr ds:[eax+ecx]            ; EDX=7BEECE02
0043599D  sub edx,dword ptr ss:[ebp+0x20]            ; EDX=086EB793
00000000  shr edx,0x5
00435AE5  add edx,dword ptr ss:[ebp-0x10]            ; EDX=F8F20D26
00435B00  mov dword ptr ss:[ebp-0x10],edx
00435B07  mov ecx,0x4
00435B0F  imul edx,ecx,0x0                          ; EDX=00000000
00435B23  mov eax,dword ptr ss:[ebp+0x8]
00435B2A  mov ecx,dword ptr ds:[eax+edx]            ; ECX=12345678
00435B44  sub ecx,dword ptr ss:[ebp+0x34]            ; ECX=AE748E8E
00435B48  mov edx,0x4                               ; EDX=00000004
00435B4D  imul eax,edx,0xC5                         ; EAX=00000314
00435B57  add ecx,dword ptr ss:[ebp+eax-0x41C]      ; ECX=1BDE89E3
00000000  shl ecx,0x6
00435CDA  mov edx,dword ptr ss:[ebp-0x2c]; EDX=8093AD84
00435CE1  sub edx,ecx                               ; EDX=88F134C4
00435D01  mov dword ptr ss:[ebp-0x2c],edx
00435D22  mov eax,dword ptr ss:[ebp-0x10]; EAX=F8F20D26
00000000  shr eax,0x1c
00435F1D  add eax,0x1                              ; EAX=00000010
00435F42  mov dword ptr ss:[ebp-0x10],eax
00435F5A  mov ecx,dword ptr ss:[ebp-0xc]; ECX=3A06D39A
00435F78  add ecx,dword ptr ss:[ebp-0x1c]            ; ECX=C3B2A189
00435F9C  mov dword ptr ss:[ebp-0xc],ecx
00436184  mov edx,dword ptr ss:[ebp-0x8]; EDX=C4805B27
00000000  shl edx,0x4
0043634F  add edx,dword ptr ss:[ebp-0x20]            ; EDX=686B20BF
00436365  mov eax,dword ptr ss:[ebp-0x8]; EAX=C4805B27
00436383  add eax,dword ptr ss:[ebp-0xc]            ; EAX=8832FCB0
00436389  xor edx,eax                               ; EDX=E059DC0F
004363A8  mov ecx,dword ptr ss:[ebp-0x8]; ECX=C4805B27
00000000  shr ecx,0x5
0043657E  add ecx,dword ptr ss:[ebp-0x18]            ; ECX=72856B4C
00436585  xor edx,ecx                               ; EDX=92DCB743
004365A4  add edx,dword ptr ss:[ebp-0x4]            ; EDX=22E778B8
004366D1  mov dword ptr ss:[ebp-0x4],edx
004366F9  mov edx,dword ptr ss:[ebp-0x4]
00000000  shl edx,0x4
00436903  add edx,dword ptr ss:[ebp-0x24]            ; EDX=A2EAABEC
0043691E  mov eax,dword ptr ss:[ebp-0x4] ; EAX=22E778B8
0043693C  add eax,dword ptr ss:[ebp-0xc]            ; EAX=E69A1A41
00436940  xor edx,eax                               ; EDX=4470B1AD
0043695F  mov ecx,dword ptr ss:[ebp-0x4]; ECX=22E778B8
00000000  shr ecx,0x5
00436B32  add ecx,dword ptr ss:[ebp-0x28]            ; ECX=217BAA26
00436B36  xor edx,ecx                               ; EDX=650B1B8B
00436C65  add edx,dword ptr ss:[ebp-0x8]            ; EDX=298B76B2
00436C7A  mov dword ptr ss:[ebp-0x8],edx
00436C95  mov edx,dword ptr ss:[ebp+0x1c] ; EDX=10325476
00436CB9  add edx,0x2077dfe7                              ; EDX=30AA345D
00000000  shr edx,0x8
0043708E  mov eax,dword ptr ss:[ebp-0x4]; EAX=22E778B8
004370A4  sub eax,edx                               ; EAX=22B6CE84
004370BD  mov dword ptr ss:[ebp-0x4],eax
004370D5  mov ecx,dword ptr ss:[ebp+0x14]; ECX=EFCDAB89
004370F9  add ecx,0x2aedddff                              ; ECX=1ABB8988
00000000  shl ecx,0x4
004372CA  mov edx,dword ptr ss:[ebp-0x8]; EDX=298B76B2
004372D1  sub edx,ecx                               ; EDX=7DD2DE32
004372EA  mov dword ptr ss:[ebp-0x8],edx
0043730E  mov eax,dword ptr ss:[ebp-0x14] ; EAX=09011A86
00000000  shr eax,0x1c
00437630  add eax,0x1                              ; EAX=00000001
00437643  mov dword ptr ss:[ebp-0x14],eax
00437662  mov ecx,dword ptr ss:[ebp-0xc]; ECX=C3B2A189
0043768C  add ecx,dword ptr ss:[ebp-0x1c]            ; ECX=4D5E6F78
004376A7  mov dword ptr ss:[ebp-0xc],ecx
004376C5  mov edx,dword ptr ss:[ebp-0x8]
00000000  shl edx,0x4
0043782D  add edx,dword ptr ss:[ebp-0x20]            ; EDX=FD93516F
0043784E  mov eax,dword ptr ss:[ebp-0x8]; EAX=7DD2DE32
00437873  add eax,dword ptr ss:[ebp-0xc]            ; EAX=CB314DAA
00437877  xor edx,eax                               ; EDX=36A21CC5
00437896  mov ecx,dword ptr ss:[ebp-0x8]; ECX=7DD2DE32
00000000  shr ecx,0x5
004378E0  add ecx,dword ptr ss:[ebp-0x18]            ; ECX=704FFF64
00437A04  xor edx,ecx                               ; EDX=46EDE3A1
00437A21  add edx,dword ptr ss:[ebp-0x4]            ; EDX=69A4B225
00437A42  mov dword ptr ss:[ebp-0x4],edx
00437A66  mov edx,dword ptr ss:[ebp-0x4]
00000000  shl edx,0x4
00437BDF  add edx,dword ptr ss:[ebp-0x24]            ; EDX=0EBE42BC
00437BF4  mov eax,dword ptr ss:[ebp-0x4] ; EAX=69A4B225
00437C18  add eax,dword ptr ss:[ebp-0xc]            ; EAX=B703219D
00437C1D  xor edx,eax                               ; EDX=B9BD6321
00437C30  mov ecx,dword ptr ss:[ebp-0x4]; ECX=69A4B225
00000000  shr ecx,0x5
00437E1C  add ecx,dword ptr ss:[ebp-0x28]            ; ECX=23B193F2
00437E20  xor edx,ecx                               ; EDX=9A0CF0D3
00437E33  add edx,dword ptr ss:[ebp-0x8]            ; EDX=17DFCF05
00437E54  mov dword ptr ss:[ebp-0x8],edx
00437E79  mov edx,dword ptr ss:[ebp-0x30] ; EDX=0AF0BF02
00000000  shr edx,0x1c
00437FE5  add edx,0x1                              ; EDX=00000001
00438004  mov dword ptr ss:[ebp-0x30],edx
0043800B  mov eax,0x4                               ; EAX=00000004
00438010  imul ecx,eax,0x0                          ; ECX=00000000
0043802A  mov edx,dword ptr ss:[ebp+0x8]; EDX=0018FD3C
00438048  mov eax,dword ptr ss:[ebp-0x4]; EAX=69A4B225
0043804F  mov dword ptr ds:[edx+ecx],eax
00438054  mov ecx,0x4                               ; ECX=00000004
00438202  mov edx,dword ptr ss:[ebp+0x8]
00438222  mov eax,dword ptr ss:[ebp-0x8]; EAX=17DFCF05
0043822F  mov dword ptr ds:[edx+ecx],eax
00438250  mov ecx,dword ptr ss:[ebp-0x2c]; ECX=88F134C4
004382B6  and ecx,0xF                               ; ECX=00000004
004382D0  add ecx,0x1                              ; ECX=00000005
0043840A  mov dword ptr ss:[ebp-0x2c],ecx
00438414  mov edx,0x4                               ; EDX=00000004
00438419  imul eax,edx,0x0                          ; EAX=00000000
00438433  mov ecx,dword ptr ss:[ebp+0x30]; ECX=00408741
00438451  mov edx,dword ptr ss:[ebp-0x10] ; EDX=00000010
00438459  mov dword ptr ds:[ecx+eax],edx
0043845C  mov eax,0x4                               ; EAX=00000004
004384AD  mov ecx,dword ptr ss:[ebp+0x30]
00438683  mov edx,dword ptr ss:[ebp-0x14]; EDX=00000001
0043868A  mov dword ptr ds:[ecx+eax],edx
0043868D  mov eax,0x4
00438695  shl eax,1                                 ; EAX=00000008
004386A8  mov ecx,dword ptr ss:[ebp+0x30]
004386C9  mov edx,dword ptr ss:[ebp-0x30]
004386D0  mov dword ptr ds:[ecx+eax],edx
004386D7  mov eax,0x4                               ; EAX=00000004
004386DC  imul ecx,eax,0x3                          ; ECX=0000000C
00438700  mov edx,dword ptr ss:[ebp+0x30] ; EDX=00408741
0043884F  mov eax,dword ptr ss:[ebp-0x2c]; EAX=00000005
00438856  mov dword ptr ds:[edx+ecx],eax
00438883  add esp,0x4                              ; ESP=0018F8DC
0043A812  add ebp,0x4                              ; EBP=0018FCF8
0043DE56  mov eax,dword ptr ss:[ebp-0x4] ; EAX=0018FF0C
0043E038  add eax,dword ptr ss:[ebp-0x1c]            ; EAX=6C7A677F
00000000  shr eax,0x9
0043E5A5  sub eax,dword ptr ss:[ebp+0x18]            ; EAX=F003E8BD
0043E77C  mov edx,dword ptr ss:[ebp-0x4]; EDX=0018FF0C
0043EA3A  xor eax,edx                               ; EAX=F01B17B1
0043ED6C  mov ebx,ebp                               ; EBX=0018FCF8
0043ED74  push ebx                                  ; ESP=0018F8D8
0043ED79  pop ebx                                   ; ESP=0018F8DC
0043EDAE  push ebx                                  ; ESP=0018F8D8
0043EDB2  pop eax                                   ; EAX=0018FCF8, ESP=0018F8DC
0043EDD0  sub eax,0x4                              ; EAX=0018FCF4
0043EDD5  mov esp,eax                               ; ESP=0018FCF4
0044017F  sub ebp,0x4                              ; EBP=0018FCF4
00441C08  mov edi,0x2AB9086F                        ; EDI=2AB9086F
00000000  add edi,0xf3b8426e
00441DFA  mov ebx,ebp                               ; EBX=0018FCF4
00444252  add ebp,0x8                              ; EBP=0018FCFC
00446EFB  push ebx                                  ; ESP=0018FCF0
00448928  mov edx,dword ptr ss:[ebp-0x4]; EDX=004016B5
00448972  push edx                                  ; ESP=0018FCEC
0044A9B8  pop edx                                   ; EDX=004016B5, ESP=0018FCF0
0044C7B6  pop eax                                   ; EAX=0018FCF4, ESP=0018FCF4
0044DE84  mov ecx,dword ptr ss:[esp]                ; ECX=0018FF0C
0044DE87  mov ebp,ecx                               ; EBP=0018FF0C
00450D62  add esp,0x25                              ; ESP=0018FD19
004559A3  sub esp,0x21                              ; ESP=0018FCF8
00456CE0  mov eax,0x4                               ; EAX=00000004
00000000  shr eax,0x5
004570CF  add eax,dword ptr ss:[ebp-0x10]            ; EAX=00000005
0045714B  sub eax,dword ptr ss:[ebp+0x14]            ; EAX=CDCDCED4
004572C3  sub eax,dword ptr ss:[ebp+0x10]            ; EAX=9596989F
004572F1  mov edx,dword ptr ss:[ebp-0x4]; EDX=BB581942
00457309  add eax,dword ptr ss:[ebp-0x10]            ; EAX=959698A4
0045730E  imul eax,edx,0x3                          ; EAX=32084BC6
0045748A  push eax                                  ; ESP=0018FCF4
0045A0C8  pop edx                                   ; EDX=32084BC6, ESP=0018FCF8
0045AE52  mov eax,0xFBB23022                        ; EAX=FBB23022
0045AE68  add eax,dword ptr ss:[ebp-0x18]            ; EAX=FBB23031
0045B0B5  mov edx,dword ptr ss:[ebp-0xc]; EDX=00000003
0045B0D3  add edx,dword ptr ss:[ebp-0x20]            ; EDX=0000000B
0045B3FE  xor eax,edx                               ; EAX=FBB2303A
00000000  shr eax,0x5
0045B82C  mov edx,dword ptr ss:[ebp-0x4]; EDX=BB581942
0045B833  mov ecx,0x4                               ; ECX=00000004
0045B853  add ecx,dword ptr ss:[ebp-0x8]
0045B857  xor ecx,eax                               ; ECX=07DD9185
0045B86A  add edx,dword ptr ss:[ebp-0x14]
0045B9A8  mov eax,dword ptr ss:[ebp-0x8]; EAX=00000000
00000000  shl edx,0x4
0045BBAA  sub edx,ecx                               ; EDX=ADA4029B
0045BBAC  xor edx,ecx                               ; EDX=AA79931E
00000000  shl ecx,0x4
0045BD5F  add edx,dword ptr ss:[ebp-0xc]            ; EDX=AA799321
0045BD74  add eax,dword ptr ss:[ebp-0x10]            ; EAX=00000005
0045BD7B  xor edx,ecx                               ; EDX=D7A08B71
0045BD94  add edx,dword ptr ss:[ebp-0x4]            ; EDX=92F8A4B3
0045BF7F  add edx,0x2077dfe7                              ; EDX=B370849A
0045BFBA  mov ecx,dword ptr ss:[ebp-0xc]; ECX=00000003
0045BFC1  xor edx,eax                               ; EDX=B370849F
0045BFC3  xor ecx,edx                               ; ECX=B370849C
0045BFD0  mov ebx,dword ptr ss:[esp]                ; EBX=004016B5
0045BFF9  add esp,0x4                              ; ESP=0018FCFC
0045BFFC  jmp ebx

5. 分析化简后的trace文件, 得到sn: 285764B86F41B019
void test()
{
	DWORD sn[2] = {0x12345678, 0x11223344}; 
	const char *key = "One shall stand and one shall fall.";
	DWORD *k = (DWORD *)key;
	DWORD y = sn[0];
	DWORD z = sn[1];
	DWORD sum = 0;
	DWORD delta = 0x89ABCDEF;
	DWORD arg_10 = 0x67452301;
	DWORD arg_14 = 0xEFCDAB89;
	DWORD arg_18 = 0x98BADCFE;
	DWORD arg_1C = 0x10325476;
	DWORD arg_20 = 0x7380166F;
	DWORD arg_24 = 0x4914B2B9;
	DWORD arg_28 = 0x172442D7;
	DWORD arg_2C = 0xDA8A0600;
	
	sum += delta;
	y += ((z << 4) + k[0]) ^ (z + sum) ^ ((z >> 5) + k[1]);
	z += ((y << 4) + k[2]) ^ (y + sum) ^ ((y >> 5) + k[3]);
	y -= (~arg_10 + 0x3eccd87b) << 7;
	z -= (0x548A46D1 - arg_14) >> 9;

	sum += delta;
	y += ((z << 4) + k[0]) ^ (z + sum) ^ ((z >> 5) + k[1]);
	z += ((y << 4) + k[2]) ^ (y + sum) ^ ((y >> 5) + k[3]);
	y -= (0xFBB23022-arg_18) << 5;
	z-= ((arg_1C - 0x100ca839) >> 6) | arg_28;

	sum += delta;
	y += ((z << 4) + k[0]) ^ (z + sum) ^ ((z >> 5) + k[1]);
	z += ((y << 4) + k[2]) ^ (y + sum) ^ ((y >> 5) + k[3]);
	y -= (0xF1E85296 - arg_1C) >> 9;
	z -= (0x8A6F6B3A - arg_10) << 4;

	sum += delta;
	y += ((z << 4) + k[0]) ^ (z + sum) ^ ((z >> 5) + k[1]);
	z += ((y << 4) + k[2]) ^ (y + sum) ^ ((y >> 5) + k[3]);
	y -= (~arg_14 - 0x6b9a2d27) << 8;
	z -= (arg_1C << 3) + 0xB4915A30;

	sum += delta;
	y += ((z << 4) + k[0]) ^ (z + sum) ^ ((z >> 5) + k[1]);
	z += ((y << 4) + k[2]) ^ (y + sum) ^ ((y >> 5) + k[3]);
	y -= ((arg_18 - 0x1b9e4315) >> 2) & k[1];
	z -= (0xC2CFE269 - arg_10) >> 5;

	sum += delta;
	y += ((z << 4) + k[0]) ^ (z + sum) ^ ((z >> 5) + k[1]);
	z += ((y << 4) + k[2]) ^ (y + sum) ^ ((y >> 5) + k[3]);
	y -= (0xD8D8F314 - arg_28) << 5;
	z -= (0xD4C61A57 - arg_14) >> 6;

	sum += delta;
	y += ((z << 4) + k[0]) ^ (z + sum) ^ ((z >> 5) + k[1]);
	z += ((y << 4) + k[2]) ^ (y + sum) ^ ((y >> 5) + k[3]);
	y -= ((arg_1C + 0x2077dfe7) >> 8);
	z -= (arg_14 + 0x2aedddff) << 4;

	sum += delta;
	y += ((z << 4) + k[0]) ^ (z + sum) ^ ((z >> 5) + k[1]);
	z += ((y << 4) + k[2]) ^ (y + sum) ^ ((y >> 5) + k[3]);
	printf("%x %x\n", y, z);
}


[看雪官方]《安卓高级研修班》线下班,网课(12月)班开始同步招生!!

最后于 2018-12-20 09:18 被风间仁编辑 ,原因:
收藏
点赞2
打赏
分享
最新回复 (7)
雪    币: 2338
活跃值: 活跃值 (365)
能力值: ( LV9,RANK:145 )
在线值:
发帖
回帖
粉丝
天水姜伯约 活跃值 3 2018-12-9 12:15
2
0
雪    币: 17
活跃值: 活跃值 (14)
能力值: ( LV9,RANK:146 )
在线值:
发帖
回帖
粉丝
wendax 活跃值 2018-12-9 12:42
3
0
雪    币: 1485
活跃值: 活跃值 (15)
能力值: ( LV5,RANK:75 )
在线值:
发帖
回帖
粉丝
新月之铭 活跃值 2018-12-9 15:12
4
0
雪    币: 1813
活跃值: 活跃值 (158)
能力值: ( LV4,RANK:55 )
在线值:
发帖
回帖
粉丝
小菜鸟一 活跃值 2018-12-9 16:56
5
0
雪    币: 4834
活跃值: 活跃值 (23)
能力值: ( LV5,RANK:73 )
在线值:
发帖
回帖
粉丝
hercules 活跃值 2018-12-9 16:58
6
0
雪    币: 2473
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
PYGame 活跃值 2018-12-9 17:41
7
0
大佬终于上线了
雪    币: 2473
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
PYGame 活跃值 2018-12-9 17:42
8
0
我估计大佬一直在线的 前几题因为太简单了  大佬不屑做!!!
游客
登录 | 注册 方可回帖
返回