Function at 0x404550
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x100
mov eax, dword [esp + 0x120]
push ebx
mov bl, byte [esp + 0x118]
push ebp
mov ebp, dword [esp + 0x120]
push esi
push edi
mov dword [esp + 0x28], 0x3fff
cmp eax, 0xffc3d44f
je 0x404591
cmp eax, 0xffc3d44e
je 0x404591
mov byte [esp + 0x13], 0
cmp eax, 0xffc3d44d
jne 0x404596
mov byte [esp + 0x13], 1
mov ecx, dword [0x4c28bc]
test ecx, ecx
jne 0x4045ad
lea edi, [esp + 0x3c]
mov dword [esp + 0x24], edi
jmp 0x404668
mov eax, dword [0x4c28c0]
mov edi, eax
imul edi, edi, 0xd4
inc eax
add edi, ecx
mov dword [esp + 0x24], edi
mov dword [0x4c28c0], eax
cmp eax, dword [0x4be3c8]
jl 0x4045d8
mov dword [0x4c28c0], 0
mov al, byte [esp + 0x12c]
mov byte [edi], bl
mov byte [edi + 6], al
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, eax
sub ecx, dword [0x4c4e50]
mov dword [0x4c28c4], eax
mov dword [esp + 0x20], ecx
fild dword [esp + 0x20]
jns 0x404607
fadd dword [0x4b8960]
fdiv qword [0x4b8958]
mov dword [0x4c4e50], eax
fstp dword [edi + 8]
call dword [sym.imp.USER32.dll_GetForegroundWindow]
mov esi, eax
test esi, esi
je 0x404649
cmp esi, dword [0x4c28c8]
je 0x404641
mov eax, dword [0x4c1ea8]
push esi
lea edx, [edi + 0xc]
push edx
push 0x418
push eax
call dword [sym.imp.USER32.dll_PostMessageW]
jmp 0x404662
xor ecx, ecx
mov word [edi + 0xc], cx
jmp 0x404662
mov eax, 0x49d874
lea edx, [edi + 0xc]
sub edx, eax
movzx ecx, word [eax]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x404653
mov dword [0x4c28c8], esi
cmp bl, 0xe7
jne 0x404692
mov edx, dword [esp + 0x120]
mov ax, word [edx + 4]
mov ecx, 0x55
mov word [edi + 2], ax
mov word [edi + 4], cx
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x100
ret
add bl, 0x64
mov word [edi + 2], bp
cmp bl, 3
ja 0x4046a7
xor ebp, ebp
mov dword [esp + 0x128], ebp
mov edx, dword [esp + 0x114]
cmp edx, dword [0x4c1fdc]
jne 0x4046e7
mov bl, byte [esp + 0x134]
and bl, 1
jne 0x404861
cmp byte [esp + 0x12c], bl
movzx ecx, byte [esp + 0x124]
setne al
dec al
and al, 0x80
mov byte [ecx + 0x4c1ec8], al
jmp 0x404861
mov ebx, dword [esp + 0x134]
shr ebx, 4
and bl, 1
test ebp, 0x100
jne case.0x40472e.13
push 0x90
call dword [sym.imp.USER32.dll_GetKeyState]
test al, 1
je case.0x40472e.13
movzx eax, byte [esp + 0x124]
add eax, 0xfffffff4
cmp eax, 0x62
ja case.0x40472e.13
movzx edx, byte [eax + 0x406314]
jmp dword [edx*4 + 0x4062e4]
cmp byte [esp + 0x12c], 0
sete al
mov byte [0x4c0d9c], al
jmp case.0x40472e.13
cmp byte [esp + 0x12c], 0
sete cl
mov byte [0x4c0d9d], cl
jmp case.0x40472e.13
cmp byte [esp + 0x12c], 0
sete dl
mov byte [0x4c0d9e], dl
jmp case.0x40472e.13
cmp byte [esp + 0x12c], 0
sete al
mov byte [0x4c0d9f], al
jmp case.0x40472e.13
cmp byte [esp + 0x12c], 0
sete cl
mov byte [0x4c0da0], cl
jmp case.0x40472e.13
cmp byte [esp + 0x12c], 0
sete dl
mov byte [0x4c0da1], dl
jmp case.0x40472e.13
cmp byte [esp + 0x12c], 0
sete al
mov byte [0x4c0da2], al
jmp case.0x40472e.13
cmp byte [esp + 0x12c], 0
sete cl
mov byte [0x4c0da3], cl
jmp case.0x40472e.13
cmp byte [esp + 0x12c], 0
sete dl
mov byte [0x4c0da4], dl
jmp case.0x40472e.13
cmp byte [esp + 0x12c], 0
sete al
mov byte [0x4c0da5], al
jmp case.0x40472e.13
cmp byte [esp + 0x12c], 0
sete cl
mov byte [0x4c0da6], cl
movzx esi, byte [esp + 0x124]
mov eax, dword [0x4c28e0]
lea edx, [esi + esi*8]
shl edx, 5
cmp byte [edx + eax + 4], 0
jne 0x404861
test byte [esp + 0x134], 0x10
jne 0x404861
mov ecx, dword [esp + 0x12c]
mov al, byte [esp + 0x124]
push ecx
call fcn.004076e0
add esp, 4
test al, al
je 0x404861
cmp byte [esp + 0x12c], 0
setne dl
dec dl
and dl, 0x80
mov byte [esi + 0x4c1ec8], dl
cmp byte [esp + 0x13], 0
je 0x40486c
mov al, 0x69
jmp 0x404878
neg bl
sbb bl, bl
and bl, 0x41
add bl, 0x20
mov al, bl
cmp byte [0x4c1fc8], 0
cbw
mov word [edi + 4], ax
je 0x4048d9
mov al, byte [esp + 0x124]
cmp al, 0x5b
je 0x404896
cmp al, 0x5c
jne 0x4048d9
cmp byte [esp + 0x12c], 0
jne 0x4048d9
mov ecx, dword [esp + 0x124]
mov eax, dword [esp + 0x120]
push 0
push SysReAllocString
push 0x3fff
push edi
push ebp
push ecx
mov ecx, dword [esp + 0x12c]
xor bl, bl
call fcn.00406410
add esp, 0x18
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x100
ret
cmp byte [0x4c0dbe], 0
je 0x404998
cmp byte [esp + 0x124], 0x1b
jne 0x404998
cmp byte [esp + 0x12c], 0
jne 0x404998
push 0
push str.32771
call dword [sym.imp.USER32.dll_FindWindowW]
test eax, eax
je 0x404998
push 0
push eax
call dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp esi, eax
jne 0x404998
push 0xffc3d44d
push 0
push 0
push 0
push 0x1b
push 0
call fcn.0040eb50
mov dl, byte [0x4c1ea5]
push 0xffc3d44d
shr dl, 3
push 0
and dl, 1
or dl, 0xa4
push 0
movzx eax, dl
push 0
push eax
push 1
call fcn.0040eb50
mov eax, dword [esp + 0x150]
mov ecx, dword [esp + 0x144]
push 0
push SysReAllocString
push 0x3fff
push edi
push ebp
push 0x1b
xor bl, bl
call fcn.00406410
add esp, 0x48
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x100
ret
mov edx, dword [0x4c28e4]
movzx eax, bp
lea ecx, [eax + eax*8]
shl ecx, 5
mov dword [esp + 0x34], eax
lea eax, [ecx + edx]
mov edx, dword [0x4c1fd8]
mov cl, byte [eax + 0x12]
mov byte [esp + 0x2f], cl
cmp dword [esp + 0x114], edx
jne 0x4049d0
test cl, cl
je 0x4049d0
mov esi, eax
mov dword [esp + 0x1c], eax
jmp 0x4049e8
movzx eax, byte [esp + 0x124]
lea esi, [eax + eax*8]
shl esi, 5
add esi, dword [0x4c28e0]
mov dword [esp + 0x1c], esi
cmp byte [esp + 0x13], 0
je 0x404a4d
cmp dword [esp + 0x130], 0xffc3d44e
jne 0x404a20
cmp byte [esp + 0x12c], 0
je 0x404a20
cmp dword [0x4c0dc0], esi
jne 0x404a20
mov byte [esi + 0xc], 0
mov byte [esi + 0xf], 0
mov dword [0x4c0dc0], 0
push 0
mov eax, dword [esp + 0x130]
mov ecx, dword [esp + 0x120]
mov edx, dword [esp + 0x11c]
push 0x3fff
push edi
push eax
mov eax, dword [esp + 0x124]
push ecx
push edx
push eax
jmp 0x4062bf
cmp byte [esp + 0x12c], 0
jne 0x404a64
mov ecx, 0x3fff
mov byte [esi + 0x10], 0
mov word [esi + 6], cx
mov ebx, dword [esp + 0x114]
cmp ebx, edx
jne 0x404b2b
cmp byte [esp + 0x12c], 0
je 0x404b99
cmp byte [0x4c0dc6], 0
mov al, byte [esp + 0x124]
je 0x404a95
cmp al, 0x5b
je 0x404ac4
cmp byte [0x4c0dc5], 0
je 0x404aa2
cmp al, 0x5c
je 0x404ac4
cmp byte [0x4c0dc4], 0
je 0x404aaf
cmp al, 0xa4
je 0x404ac4
cmp byte [0x4c0dbf], 0
je 0x404b99
cmp al, 0xa5
jne 0x404b99
movzx eax, al
add eax, 0xffffffa5
cmp eax, 0x4a
ja case.0x404ad6.93
movzx edx, byte [eax + 0x40638c]
jmp dword [edx*4 + 0x406378]
mov byte [0x4c0dc6], 0
jmp case.0x404ad6.93
mov byte [0x4c0dc5], 0
jmp case.0x404ad6.93
mov byte [0x4c0dc4], 0
jmp case.0x404ad6.93
mov byte [0x4c0dbf], 0
test byte [0x4c1ea5], 3
jne 0x404b99
movzx eax, byte [0x4be375]
push 0xffc3d44d
push 0
push 0
push 0
push eax
push 2
call fcn.0040eb50
add esp, 0x18
jmp 0x404b99
mov al, byte [esp + 0x124]
test al, al
jne 0x404b5e
mov ecx, dword [esp + 0x12c]
mov edx, dword [esp + 0x11c]
mov eax, dword [esp + 0x118]
push 0
push 0x3fff
push edi
push ecx
push edx
push eax
push ebx
xor cl, cl
jmp 0x4062c6
cmp al, 1
je 0x404b66
cmp al, 2
jne 0x404b99
cmp dword [0x4c2034], 0
jne 0x406292
push 0
push str.32768
call dword [sym.imp.USER32.dll_FindWindowW]
test eax, eax
je 0x404b99
push 0
push eax
call dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
cmp eax, dword [0x4c3fc0]
je 0x406292
mov edx, dword [0x4c0dc0]
mov ecx, dword [0x4c28e0]
test edx, edx
je 0x404bd5
cmp edx, esi
je 0x404bd5
cmp byte [esp + 0x12c], 0
jne 0x404bd5
cmp ebx, dword [0x4c1fd8]
jne 0x404bc9
xor eax, eax
cmp byte [esi + 4], al
sete al
jmp 0x404bcd
movzx eax, byte [edx + 4]
test eax, eax
je 0x404bd5
mov byte [edx + 0x11], 1
cmp byte [esi + 8], 0
jne 0x404bf6
cmp byte [esi + 9], 0
jne 0x404bf6
mov ecx, dword [esp + 0x12c]
push 0
push 0x3fff
push edi
push ecx
jmp 0x4062ae
cmp byte [esp + 0x12c], 0
mov byte [esp + 0x33], 0
mov dword [esp + 0x14], 0x3fff
mov dword [esp + 0x20], 0
je 0x404c50
mov al, byte [esi + 0xf]
mov dl, byte [esi + 0xc]
mov byte [esp + 0x12], al
movzx eax, word [esi + 6]
mov byte [esp + 0x1b], dl
mov edx, 0x3fff
mov byte [esi + 0xf], 0
cmp ax, dx
je 0x404c42
mov dword [esp + 0x14], eax
mov byte [esp + 0x33], 1
mov word [esi + 6], dx
mov edx, dword [0x4c0dc0]
cmp byte [esp + 0x12c], 0
sete al
mov byte [esi + 0xc], al
mov eax, dword [0x4c1fd8]
mov byte [esp + 0x11], 0
cmp ebx, eax
jne 0x404cd9
cmp byte [esi + 4], 0
je 0x404cfc
cmp byte [ecx + 0xb64c], 0
jne 0x404c84
cmp byte [ecx + 0xb76c], 0
jne 0x404c84
xor eax, eax
jmp 0x404c89
mov eax, 1
cmp byte [ecx + 0xb88c], 0
mov byte [ecx + 0x132c], al
jne 0x404ca5
cmp byte [ecx + 0xb9ac], 0
jne 0x404ca5
xor eax, eax
jmp 0x404caa
mov eax, 1
cmp byte [ecx + 0xb40c], 0
mov byte [ecx + 0x144c], al
jne 0x404ccc
cmp byte [ecx + 0xb52c], 0
jne 0x404ccc
xor eax, eax
mov byte [ecx + 0x120c], al
jmp 0x404cfc
mov eax, 1
mov byte [ecx + 0x120c], al
jmp 0x404cfc
test eax, eax
jne 0x404cfc
push 1
call fcn.00411170
mov edx, dword [0x4c0dc0]
add esp, 4
mov byte [0x4c1ea6], al
mov byte [0x4c1ea5], al
mov byte [esp + 0x11], 1
mov eax, dword [esi]
test eax, eax
je 0x404d0c
cmp dword [eax], 7
mov byte [esp + 0x13], 1
je 0x404d11
mov byte [esp + 0x13], 0
mov al, byte [esi + 8]
test al, al
je 0x404e93
cmp byte [esp + 0x12c], 0
jne 0x404e93
test edx, edx
je 0x404d3c
cmp byte [esi + 9], 0
je 0x404d3c
cmp esi, edx
jne 0x404e93
cmp al, 1
jne 0x404d69
cmp byte [esp + 0x2f], 0
mov eax, dword [esp + 0x34]
jne 0x404d53
movzx eax, byte [esp + 0x124]
mov ecx, dword [esp + 0x2f]
push ecx
push eax
call fcn.004099e0
add esp, 8
test al, al
je 0x404d69
mov bl, 1
jmp 0x404d7c
xor bl, bl
cmp esi, dword [0x4c0dc0]
je 0x404d7c
mov dword [0x4c0dc0], esi
mov byte [esi + 0x11], bl
cmp byte [esi + 9], 0
je 0x404e32
cmp byte [esp + 0x11], 0
jne 0x404d9c
push 1
mov byte [esp + 0x15], 1
call fcn.00411170
add esp, 4
mov al, byte [esi + 4]
mov cl, byte [0x4c1ea6]
test al, al
je 0x404dad
not al
and cl, al
test cl, cl
jne 0x404db5
test bl, bl
je 0x404e32
mov edx, dword [0x4c1fd8]
cmp dword [esp + 0x114], edx
jne 0x404de1
cmp byte [esp + 0x2f], 0
je 0x404de1
movzx eax, cl
mov ecx, dword [0x4c28d8]
shl eax, 9
add eax, dword [esp + 0x34]
movzx ecx, word [ecx + eax*2]
jmp 0x404dfb
movzx eax, byte [esp + 0x124]
movzx edx, cl
mov ecx, dword [0x4c28d4]
shl edx, 8
add edx, eax
movzx ecx, word [ecx + edx*2]
mov dword [esp + 0x14], ecx
test ecx, 0x4000
je 0x404e0d
mov word [esi + 6], cx
jmp 0x404e40
mov edx, dword [0x4bf608]
mov eax, ecx
and eax, 0x3fff
cmp ax, word [edx]
jae 0x404e36
mov edx, dword [0x4c28dc]
movzx eax, ax
mov ax, word [edx + eax*2]
mov word [esi + 6], ax
jmp 0x404e36
mov ecx, dword [esp + 0x14]
mov edx, 0x3fff
cmp cx, dx
jne 0x404e93
test bl, bl
je 0x404e51
or byte [esi + 0xb], 8
mov eax, 0x23
mov word [edi + 4], ax
cmp byte [esi + 4], 0
jne 0x404e6c
test byte [esi + 0xb], 1
jne 0x404e6c
cmp byte [esp + 0x13], 0
jne 0x404e6c
test bl, bl
je 0x4048a0
mov edx, dword [esp + 0x11c]
mov eax, dword [esp + 0x118]
mov ecx, dword [esp + 0x114]
push 0
push 0x3fff
push edi
push 0
push edx
push eax
push ecx
jmp 0x4062bf
cmp byte [esi + 9], 0
mov edx, dword [esp + 0x12c]
mov byte [esp + 0x1a], 0
je 0x404f33
test dl, dl
je 0x404f33
cmp dword [0x4c0dc0], esi
jne 0x404eca
cmp byte [esp + 0x12], 0
je 0x404f33
mov dword [0x4c0dc0], 0
cmp byte [esi + 0xa], 0
jne 0x404f2e
mov al, byte [esi + 0xb]
test al, 8
je 0x404ee0
xor cl, cl
and al, 0xf7
mov byte [esi + 0xb], al
jmp 0x404ee2
mov cl, 1
cmp byte [esp + 0x12], 0
je 0x404f08
test cl, cl
je 0x404f08
mov edx, dword [esp + 0x124]
push 0
push SysReAllocString
push 0x3fff
push edi
push ebp
push edx
jmp 0x4050c9
mov eax, dword [esp + 0x11c]
mov ecx, dword [esp + 0x118]
push 0
push 0x3fff
push edi
push edx
mov edx, dword [esp + 0x124]
push eax
push ecx
push edx
jmp 0x4062bf
mov byte [esp + 0x1a], 1
cmp byte [esi + 8], 0
je 0x40513d
test dl, dl
je 0x40513d
cmp dword [0x4c0dc0], esi
jne 0x404f57
mov dword [0x4c0dc0], 0
cmp byte [esi + 0xd], 0
je 0x404f78
push 0xffc3d44d
push 0
push 0
push 0
push 0x12
push 1
mov byte [esi + 0xd], 0
call fcn.0040eb50
add esp, 0x18
cmp byte [esi + 0xe], 0
je 0x404f99
push 0xffc3d44d
push 0
push 0
push 0
push 0x10
push 1
mov byte [esi + 0xe], 0
call fcn.0040eb50
add esp, 0x18
mov ebx, dword [esp + 0x14]
mov eax, 0x3fff
cmp bx, ax
jne 0x404fe0
mov al, byte [esi + 0xb]
test al, 8
je 0x404fe0
and al, 0xf7
mov byte [esi + 0xb], al
mov ecx, dword [esp + 0x12c]
mov edx, dword [esp + 0x11c]
mov eax, dword [esp + 0x118]
push 0
push 0x3fff
push edi
push ecx
mov ecx, dword [esp + 0x124]
push edx
push eax
push ecx
jmp 0x4062bf
mov cl, byte [esp + 0x13]
mov al, byte [esi + 0x11]
test cl, cl
je 0x40508a
cmp al, 2
jne 0x405055
mov esi, dword [esp + 0x124]
push 0xffc3d44e
push 0
push 0
push ebp
push esi
push 1
call fcn.0040eb50
push 0xffc3d44d
push 0
push 0
push ebp
push esi
push 2
call fcn.0040eb50
push 0
push SysReAllocString
push 0x3fff
push edi
push ebp
mov bl, byte [esp + 0x170]
mov eax, dword [esp + 0x164]
mov ecx, dword [esp + 0x158]
push esi
call fcn.00406410
add esp, 0x48
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x100
ret
cmp al, 1
jne 0x4050f1
push 0
mov edx, dword [esp + 0x130]
mov eax, dword [esp + 0x120]
mov ecx, dword [esp + 0x11c]
push 0x3fff
push edi
push edx
mov edx, dword [esp + 0x124]
push eax
push ecx
push edx
jmp 0x4062bf
test al, al
je 0x4050f1
mov edx, 0x3fff
cmp bx, dx
jne 0x4050f1
cmp byte [esi + 4], 0
je 0x4050ad
cmp al, 2
jne 0x404fb3
push 1
jmp 0x404a22
test byte [esi + 0xb], 1
push 0
jne 0x40505f
mov eax, dword [esp + 0x128]
push SysReAllocString
push 0x3fff
push edi
push ebp
push eax
mov ecx, dword [esp + 0x12c]
mov bl, byte [esp + 0x144]
mov eax, dword [esp + 0x138]
call fcn.00406410
add esp, 0x18
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x100
ret
cmp byte [esi + 9], 0
jne 0x40512b
cmp byte [esi + 4], 0
jne 0x40505d
test byte [esi + 0xb], 1
jne 0x40505d
test cl, cl
jne 0x40505d
mov ecx, dword [esp + 0x124]
push 0
push SysReAllocString
push 0x3fff
push edi
push ebp
push ecx
jmp 0x4050c9
cmp byte [esp + 0x1b], 0
jne 0x405141
cmp byte [esi + 0xa], 0
jne 0x405141
jmp 0x404a20
mov ebx, dword [esp + 0x14]
cmp byte [esp + 0x11], 0
jne 0x40515c
mov ecx, 0x3fff
cmp bx, cx
jne 0x40515c
push 1
call fcn.00411170
add esp, 4
cmp dword [0x4c0dc0], 0
mov byte [esp + 0x12], 0
je 0x40586f
cmp byte [esp + 0x12c], 0
je 0x405186
mov edx, dword [esp + 0x1c]
cmp byte [edx + 0xa], 0
je 0x40586f
mov eax, 0x3fff
cmp bx, ax
jne 0x405b17
mov edi, dword [esp + 0x1c]
xor ebp, ebp
cmp byte [edi + 0x13], 0
jbe 0x40522e
mov edx, dword [0x4c28e0]
lea esi, [edi + 0x16]
lea ecx, [ecx]
mov cl, byte [esi]
movzx eax, cl
lea eax, [eax + eax*8]
shl eax, 5
cmp byte [eax + edx + 0xc], 0
je 0x405204
movzx eax, word [esi + 2]
test eax, 0x4000
je 0x4051ee
cmp byte [esp + 0x12c], 0
jne 0x405212
mov ecx, 0x3fff
mov word [edi + 6], ax
cmp bx, cx
je 0x405204
mov dword [esp + 0x14], ebx
jmp 0x4052d6
cmp byte [esp + 0x12c], 0
mov edx, dword [0x4c28e0]
jne 0x405204
mov ebx, eax
mov byte [esp + 0x11], cl
movzx eax, byte [edi + 0x13]
inc ebp
add esi, 4
cmp ebp, eax
jl 0x4051b0
jmp 0x40521c
mov cl, byte [esi]
movzx ebx, word [esi + 2]
mov byte [esp + 0x11], cl
mov edx, 0x3fff
mov dword [esp + 0x14], ebx
cmp bx, dx
jne 0x4052d0
xor ebp, ebp
cmp byte [edi + 0x14], 0
jbe 0x4052b3
lea esi, [edi + 0xde]
movzx ecx, word [esi]
mov edx, dword [0x4c28e4]
mov eax, ecx
lea eax, [eax + eax*8]
shl eax, 5
cmp byte [eax + edx + 0xc], 0
je 0x405359
movzx eax, word [esi + 2]
test eax, 0x4000
je 0x405349
cmp byte [esp + 0x12c], 0
jne 0x40536b
mov word [edi + 6], ax
mov eax, 0x3fff
cmp bx, ax
je 0x405359
mov dword [esp + 0x14], ebx
movzx eax, word [esp + 0x38]
lea eax, [eax + eax*8]
shl eax, 5
add eax, dword [0x4c28e4]
mov dword [0x4c0dc0], eax
mov edx, 0x3fff
cmp bx, dx
jne case.default.0x4052c9
movzx eax, byte [esp + 0x124]
add eax, 0xffffff60
cmp eax, 5
ja case.default.0x4052c9
jmp dword [eax*4 + 0x4063d8]
mov edx, dword [0x4c28e0]
movzx ecx, byte [esp + 0x11]
mov eax, ecx
sub eax, 0x10
je 0x40532d
dec eax
je 0x405311
dec eax
je 0x4052f8
lea ecx, [ecx + ecx*8]
shl ecx, 5
add ecx, edx
mov dword [0x4c0dc0], ecx
jmp 0x4052a5
xor eax, eax
cmp byte [edx + 0xb9ac], al
setne al
lea eax, [eax + eax*8 + 0x5c4]
shl eax, 5
add eax, edx
jmp 0x4052a0
xor eax, eax
cmp byte [edx + 0xb76c], al
setne al
lea eax, [eax + eax*8 + 0x5b2]
shl eax, 5
add eax, edx
jmp 0x4052a0
xor eax, eax
cmp byte [edx + 0xb52c], al
setne al
lea eax, [eax + eax*8 + 0x5a0]
shl eax, 5
add eax, edx
jmp 0x4052a0
cmp byte [esp + 0x12c], 0
jne 0x405359
mov ebx, eax
mov dword [esp + 0x38], ecx
movzx edx, byte [edi + 0x14]
inc ebp
add esi, 4
cmp ebp, edx
jl 0x405240
jmp 0x405376
movzx eax, word [esi]
movzx ebx, word [esi + 2]
mov dword [esp + 0x38], eax
mov ecx, 0x3fff
mov dword [esp + 0x14], ebx
cmp bx, cx
je 0x4052b3
jmp 0x40528f
mov al, 0x11
jmp 0x405397
mov al, 0x12
jmp 0x405397
mov al, 0x10
mov ecx, dword [0x4c28e0]
movzx eax, al
lea edx, [eax + eax*8]
shl edx, 5
movzx ebp, byte [edx + ecx + 0x13]
add edx, ecx
xor edi, edi
test ebp, ebp
jle 0x405433
lea esi, [edx + 0x16]
lea ebx, [ebx]
mov cl, byte [esi]
mov ebx, dword [0x4c28e0]
movzx eax, cl
lea eax, [eax + eax*8]
shl eax, 5
cmp byte [eax + ebx + 0xc], 0
je 0x405417
movzx eax, word [esi + 2]
test eax, 0x4000
je 0x405405
cmp byte [esp + 0x12c], 0
jne 0x405425
mov ecx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x14]
mov word [ecx + 6], ax
mov eax, 0x3fff
cmp bx, ax
jne 0x405441
jmp 0x40541b
cmp byte [esp + 0x12c], 0
jne 0x405417
mov dword [esp + 0x14], eax
mov byte [esp + 0x11], cl
mov ebx, dword [esp + 0x14]
inc edi
add esi, 4
cmp edi, ebp
jl 0x4053c0
jmp 0x405433
movzx ebx, word [esi + 2]
mov cl, byte [esi]
mov dword [esp + 0x14], ebx
mov byte [esp + 0x11], cl
mov eax, 0x3fff
cmp bx, ax
je 0x4054cd
movzx ecx, byte [esp + 0x11]
mov eax, ecx
sub eax, 0x10
je 0x4054ae
dec eax
je 0x40548c
dec eax
je 0x40546a
lea ecx, [ecx + ecx*8]
shl ecx, 5
add ecx, dword [0x4c28e0]
mov dword [0x4c0dc0], ecx
jmp case.default.0x4052c9
mov ecx, dword [0x4c28e0]
xor eax, eax
cmp byte [ecx + 0xb9ac], al
setne al
lea eax, [eax + eax*8 + 0x5c4]
shl eax, 5
add eax, ecx
jmp 0x405543
mov ecx, dword [0x4c28e0]
xor eax, eax
cmp byte [ecx + 0xb76c], al
setne al
lea eax, [eax + eax*8 + 0x5b2]
shl eax, 5
add eax, ecx
jmp 0x405543
mov ecx, dword [0x4c28e0]
xor eax, eax
cmp byte [ecx + 0xb52c], al
setne al
lea eax, [eax + eax*8 + 0x5a0]
shl eax, 5
add eax, ecx
jmp 0x405543
movzx ebp, byte [edx + 0x14]
xor edi, edi
test ebp, ebp
jle case.default.0x4052c9
lea esi, [edx + 0xde]
lea ecx, [ecx]
movzx ecx, word [esi]
mov eax, ecx
lea edx, [eax + eax*8]
mov eax, dword [0x4c28e4]
shl edx, 5
cmp byte [edx + eax + 0xc], 0
je 0x4055e5
movzx eax, word [esi + 2]
test eax, 0x4000
je 0x4055d3
cmp byte [esp + 0x12c], 0
jne 0x4055f3
mov ecx, dword [esp + 0x1c]
mov edx, 0x3fff
mov word [ecx + 6], ax
cmp bx, dx
je 0x4055e5
mov dword [esp + 0x14], ebx
movzx eax, word [esp + 0x38]
lea eax, [eax + eax*8]
shl eax, 5
add eax, dword [0x4c28e4]
mov dword [0x4c0dc0], eax
mov eax, ebx
and eax, 0x3fff
mov ecx, 0x3fff
mov esi, eax
cmp bx, cx
je 0x40562c
mov edx, dword [0x4bf608]
cmp si, word [edx]
jae 0x405622
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
mov esi, dword [esp + 0x12c]
lea eax, [edi + 4]
push eax
lea eax, [esp + 0x16]
push eax
add ecx, 0xb
push ecx
lea edx, [esp + 0x20]
push esi
push edx
call fcn.00409c40
add esp, 0x14
mov dword [esp + 0x20], eax
test eax, eax
jne 0x405615
push eax
push 0x3fff
push edi
push esi
mov eax, dword [esp + 0x12c]
mov ecx, dword [esp + 0x128]
mov edx, dword [esp + 0x124]
push eax
mov eax, dword [esp + 0x13c]
push ecx
mov cl, byte [esp + 0x13c]
push edx
jmp 0x4062c8
cmp byte [esp + 0x12c], 0
jne 0x4055e5
mov ebx, eax
mov eax, ecx
mov dword [esp + 0x38], eax
inc edi
add esi, 4
cmp edi, ebp
jl 0x4054e0
jmp 0x4055fe
movzx ecx, word [esi]
movzx ebx, word [esi + 2]
mov dword [esp + 0x38], ecx
mov edx, 0x3fff
mov dword [esp + 0x14], ebx
cmp bx, dx
je case.default.0x4052c9
jmp 0x405532
mov ebx, dword [esp + 0x14]
mov eax, ebx
and eax, 0x3fff
mov esi, eax
mov ecx, dword [0x4c0dc0]
mov byte [ecx + 0x11], 2
mov edx, 0x3ffe
cmp si, dx
je 0x405644
mov eax, 0x3ffd
cmp si, ax
jne 0x40586f
cmp byte [esp + 0x12c], 0
jne 0x405656
mov ecx, dword [esp + 0x1c]
mov byte [ecx + 0xf], 1
test byte [0x4c1ea5], 0xc
jne 0x405676
push 0xffc3d44d
push 0
push 0
push 0
push 0x12
push 0
call fcn.0040eb50
add esp, 0x18
mov al, byte [esp + 0x124]
cmp al, 0xa2
je 0x405685
cmp al, 0xa3
jne 0x4056b2
cmp byte [esp + 0x12c], 0
jne 0x4056b2
mov edx, dword [esp + 0x128]
mov eax, dword [esp + 0x124]
push 0xffc3d44d
push 0
push 0
push edx
push eax
push 1
call fcn.0040eb50
add esp, 0x18
mov ecx, dword [0x4c0dc0]
mov edx, 0x3ffd
mov byte [ecx + 0xd], 1
cmp si, dx
jne 0x4056f4
test byte [0x4c1ea5], 0x30
jne 0x4056e6
push 0xffc3d44d
push 0
push 0
push 0
push 0x10
push 0
call fcn.0040eb50
add esp, 0x18
mov eax, dword [0x4c0dc0]
mov byte [eax + 0xe], 1
jmp 0x405784
mov ecx, 0x3ffe
cmp si, cx
jne 0x405784
mov al, byte [esp + 0x124]
cmp al, 0xa0
je 0x405711
cmp al, 0xa1
jne 0x40573e
cmp byte [esp + 0x12c], 0
jne 0x40573e
mov edx, dword [esp + 0x128]
mov eax, dword [esp + 0x124]
push 0xffc3d44d
push 0
push 0
push edx
push eax
push 1
call fcn.0040eb50
add esp, 0x18
test byte [0x4c1ea5], 0x10
je 0x405761
push 0xffc3d44d
push 0
push 0
push 0
push 0xa0
push 1
call fcn.0040eb50
add esp, 0x18
test byte [0x4c1ea5], 0x20
je 0x405784
push 0xffc3d44d
push 0
push 0
push 0
push 0xa1
push 1
call fcn.0040eb50
add esp, 0x18
test byte [0x4c1ea5], 1
je 0x4057a7
push 0xffc3d44d
push 0
push 0
push 0
push 0xa2
push 1
call fcn.0040eb50
add esp, 0x18
test byte [0x4c1ea5], 2
je 0x4057ca
push 0xffc3d44d
push 0
push 0
push 0
push 0xa3
push 1
call fcn.0040eb50
add esp, 0x18
push 0xffc3d44d
push 0
push 0
push 0
push 9
push 2
call fcn.0040eb50
mov ecx, 0x3ffd
add esp, 0x18
cmp si, cx
jne 0x40582a
mov edx, dword [0x4c0dc0]
cmp byte [edx + 0xe], 0
je 0x40582a
mov al, byte [esp + 0x124]
cmp al, 0x60
jb 0x405806
cmp al, 0x69
jbe 0x40580a
cmp al, 0x6e
jne 0x40582a
push 0xffc3d44d
push 0
push 0
push 0
push 0x10
push 1
call fcn.0040eb50
mov eax, dword [0x4c0dc0]
add esp, 0x18
mov byte [eax + 0xe], 0
cmp byte [esp + 0x12c], 0
mov eax, dword [esp + 0x24]
mov ecx, 0x68
mov word [eax + 4], cx
jne 0x405849
mov edx, dword [esp + 0x1c]
mov byte [edx + 0x10], 1
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x128]
mov edx, dword [esp + 0x124]
push 0
push SysReAllocString
push 0x3fff
push eax
push ecx
push edx
jmp 0x4050c9
mov eax, 0x3fff
cmp bx, ax
jne 0x405b17
mov esi, dword [esp + 0x1c]
mov cl, byte [esi + 4]
mov al, byte [0x4c1ea6]
test cl, cl
je 0x405893
mov dl, cl
not dl
and al, dl
mov edi, dword [esp + 0x114]
cmp edi, dword [0x4c1fd8]
jne 0x4058bb
cmp byte [esp + 0x2f], 0
je 0x4058bb
mov ebx, dword [0x4c28d8]
movzx edx, al
shl edx, 9
add edx, dword [esp + 0x34]
jmp 0x4058d1
movzx ebx, byte [esp + 0x124]
movzx edx, al
shl edx, 8
add edx, ebx
mov ebx, dword [0x4c28d4]
movzx ebx, word [ebx + edx*2]
mov edx, 0x3fff
mov dword [esp + 0x14], ebx
cmp bx, dx
jne 0x405958
cmp byte [0x4c0dbe], 0
je 0x405958
mov dl, byte [esp + 0x124]
cmp dl, 9
je 0x405958
and al, 0xf3
cmp edi, dword [0x4c1fd8]
jne 0x40591b
cmp byte [esp + 0x2f], 0
je 0x40591b
mov edx, dword [0x4c28d8]
movzx eax, al
shl eax, 9
add eax, dword [esp + 0x34]
jmp 0x40592c
movzx eax, al
movzx edx, dl
shl eax, 8
add eax, edx
mov edx, dword [0x4c28d4]
movzx ebx, word [edx + eax*2]
mov eax, ebx
and eax, 0x3fff
mov edx, 0x3ff9
mov dword [esp + 0x14], ebx
cmp ax, dx
jbe 0x40594f
mov edx, 0x3fff
cmp ax, dx
jb 0x405958
mov ebx, 0x3fff
mov dword [esp + 0x14], ebx
test ebx, 0x4000
je 0x4059b1
cmp byte [esp + 0x12c], 0
jne 0x405a15
mov word [esi + 6], bx
lea eax, [esi + 6]
mov ecx, 0x3fff
push 0
cmp word [eax], cx
jne 0x405aa6
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x120]
push ecx
mov ecx, dword [esp + 0x120]
push edx
push 0
push eax
mov eax, dword [esp + 0x13c]
push ecx
mov cl, byte [esp + 0x13c]
push edi
jmp 0x4062c8
mov eax, 0x3fff
cmp bx, ax
je 0x405a23
mov edx, dword [0x4bf608]
mov eax, ebx
and eax, 0x3fff
cmp byte [esp + 0x12c], 0
je 0x4059ff
cmp ax, word [edx]
jae 0x4059f6
mov edx, dword [0x4c28dc]
movzx eax, ax
movzx eax, word [edx + eax*2]
mov edx, 0x3fff
cmp ax, dx
je 0x4059f6
mov ebx, eax
mov dword [esp + 0x14], ebx
jmp 0x405a15
cmp byte [esp + 0x1a], 0
jne 0x405a23
jmp 0x405a15
cmp ax, word [edx]
jae 0x405a15
mov edx, dword [0x4c28dc]
movzx eax, ax
mov ax, word [edx + eax*2]
mov word [esi + 6], ax
mov edx, 0x3fff
cmp bx, dx
jne 0x405b17
cmp byte [esp + 0x12c], 0
je 0x405972
test cl, cl
jne 0x405a6e
test byte [esi + 0xb], 1
jne 0x405a6e
cmp byte [esi + 8], cl
je 0x405a6e
cmp byte [esp + 0x13], cl
jne 0x405a6e
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x128]
mov edx, dword [esp + 0x124]
push 0
push SysReAllocString
push 0x3fff
push eax
push ecx
push edx
mov ecx, edi
jmp 0x4050d0
mov eax, dword [esp + 0x24]
push 0
push 0x3fff
push eax
mov ecx, dword [esp + 0x138]
mov edx, dword [esp + 0x128]
mov eax, dword [esp + 0x124]
push ecx
mov cl, byte [esp + 0x134]
push edx
push eax
mov eax, dword [esp + 0x140]
push edi
jmp 0x4062c8
lea edx, [esp + 0x16]
push edx
add esi, 0xb
push esi
push 1
push eax
call fcn.00409c40
mov eax, dword [esp + 0x38]
add esp, 0x14
cmp byte [esp + 0x12], 0
push 0
je 0x405af3
mov ecx, dword [esp + 0x120]
mov edx, dword [esp + 0x11c]
push 0x3fff
push eax
mov eax, dword [esp + 0x134]
push 0
push ecx
mov cl, byte [esp + 0x138]
push edx
push edi
jmp 0x4062c8
mov ecx, dword [esp + 0x12c]
mov edx, dword [esp + 0x128]
push SysReAllocString
push 0x3fff
push eax
push ecx
push edx
xor bl, bl
mov ecx, edi
jmp 0x4050d7
mov edi, dword [esp + 0x1c]
mov al, byte [edi + 0xb]
mov esi, dword [esp + 0x20]
add edi, 0xb
mov dword [esp + 0x34], edi
test al, 8
je 0x405b40
cmp byte [esp + 0x12c], 0
je 0x405b40
and al, 0xf7
mov byte [esp + 0x12], 1
mov byte [edi], al
mov ecx, dword [0x4bf608]
mov ebp, dword [esp + 0x24]
mov eax, ebx
and eax, 0x3fff
cmp ax, word [ecx]
jae 0x405bba
test esi, esi
jne 0x405bba
mov edi, dword [esp + 0x12c]
lea eax, [ebp + 4]
push eax
mov eax, dword [esp + 0x38]
lea edx, [esp + 0x16]
push edx
push eax
lea ecx, [esp + 0x20]
push edi
push ecx
call fcn.00409c40
mov esi, eax
add esp, 0x14
test esi, esi
jne 0x405bb6
mov edx, dword [esp + 0x11c]
mov ecx, dword [esp + 0x114]
push eax
mov eax, dword [esp + 0x11c]
push 0x3fff
push ebp
push edi
push edx
push eax
mov eax, dword [esp + 0x140]
push ecx
mov cl, byte [esp + 0x140]
jmp 0x4062c8
mov ebx, dword [esp + 0x14]
mov edi, dword [esp + 0x114]
mov edx, dword [0x4c1fd8]
mov al, byte [0x4c1ea5]
and ebx, 0x3fff
mov dword [esp + 0x20], ebx
cmp edi, edx
jne 0x405c0e
test al, 0x3f
jne 0x405c2e
mov ecx, dword [0x4c28e0]
test al, 0x40
je 0x405bf8
cmp byte [ecx + 0x6668], 0
jne 0x405bf8
mov byte [0x4c0dc6], 1
test al, al
jns 0x405c34
cmp byte [ecx + 0x6788], 0
jne 0x405c34
mov byte [0x4c0dc5], 1
jmp 0x405c34
test al, 0xc
jne 0x405c2e
mov ecx, dword [0x4c28e0]
test al, 0x40
je 0x405bf8
cmp byte [ecx + 0x6668], 0
jne 0x405bf8
mov byte [0x4c0dc6], 1
jmp 0x405c34
mov ecx, dword [0x4c28e0]
test al, 4
je 0x405c63
cmp byte [ecx + 0xb888], 0
jne 0x405c63
test edx, edx
je 0x405c4e
mov byte [0x4c0dc4], 1
jmp 0x405ca8
movzx edx, byte [0x4be375]
push 0xffc3d44d
push 0
push 0
push 0
push edx
jmp 0x405c9e
test al, 8
je 0x405ca8
cmp byte [ecx + 0xb9a8], 0
jne 0x405ca8
call fcn.004116d0
test al, al
jne 0x405ca8
cmp dword [0x4c1fd8], 0
je 0x405c8b
mov byte [0x4c0dbf], 1
jmp 0x405ca8
movzx eax, byte [0x4be375]
push 0xffc3d44d
push 0
push 0
push 0
push eax
push 2
call fcn.0040eb50
add esp, 0x18
mov edx, dword [esp + 0x20]
movzx eax, dx
lea ecx, [eax - 0x3ffa]
cmp ecx, 4
ja case.default.0x405cbe
jmp dword [ecx*4 + 0x4063f0]
cmp byte [0x4c0dbe], 0
jne case.0x405cbe.16379
push 0
push 0x3fff
push ebp
jmp 0x405a7a
mov cl, byte [0x4c1ea5]
xor al, al
mov byte [esp + 0x11], al
test cl, 4
je 0x405cf0
mov al, 0xa4
jmp 0x405cf7
test cl, 8
je 0x405cfb
mov al, 0xa5
mov byte [esp + 0x11], al
cmp byte [0x4c0dbe], 0
je 0x405d79
mov ecx, 0x3ffb
cmp dx, cx
je case.0x405cbe.16381
test al, al
movzx eax, al
jne 0x405d1e
mov eax, 0x12
push 0xffc3d44d
push 0
push 0
push 0
push eax
push 1
call fcn.0040eb50
mov edx, dword [esp + 0x34]
add esp, 0x18
cmp byte [edx + 4], 0
je 0x405d6d
mov eax, dword [esp + 0x124]
cmp al, 0x5b
je 0x405d6d
cmp al, 0x5c
je 0x405d6d
cmp byte [esp + 0x12c], 0
jne 0x405d6d
push 0xffc3d44d
push 0
push 0
push 0
push eax
push 1
call fcn.0040eb50
add esp, 0x18
mov byte [0x4c0dbe], 0
jmp 0x406014
mov al, byte [esp + 0x124]
cmp al, 0xa4
je 0x405d8d
mov byte [esp + 0x1a], 0
cmp al, 0xa5
jne 0x405d92
mov byte [esp + 0x1a], 1
cmp al, 0xa0
je 0x405d9e
cmp al, 0xa1
je 0x405d9e
xor cl, cl
jmp 0x405da0
mov cl, 1
mov byte [esp + 0x1b], cl
cmp al, 0xa2
je 0x405db0
cmp al, 0xa3
je 0x405db0
xor dl, dl
jmp 0x405db2
mov dl, 1
xor al, al
test byte [0x4c1ea5], 0x10
mov byte [esp + 0x20], al
je 0x405dc5
mov al, 0xa0
jmp 0x405de7
test byte [0x4c1ea5], 0x20
je 0x405dd2
mov al, 0xa1
jmp 0x405de7
cmp byte [esp + 0x12c], 0
jne 0x405deb
test cl, cl
je 0x405deb
mov al, byte [esp + 0x124]
mov byte [esp + 0x20], al
mov cl, byte [0x4c1ea5]
mov byte [esp + 0x2f], 0
test cl, 1
je 0x405e02
mov byte [esp + 0x2f], 0xa2
jmp 0x405e27
test cl, 2
je 0x405e0e
mov byte [esp + 0x2f], 0xa3
jmp 0x405e27
cmp byte [esp + 0x12c], 0
jne 0x405e27
test dl, dl
je 0x405e27
mov cl, byte [esp + 0x124]
mov byte [esp + 0x2f], cl
mov edi, dword [esp + 0x20]
xor bl, bl
test al, al
je 0x405e49
push 0xffc3d44d
push 0
push 0
push 0
push edi
push 1
call fcn.0040eb50
add esp, 0x18
mov bl, 1
cmp byte [esp + 0x2f], 0
je 0x405e6a
mov edx, dword [esp + 0x2f]
push 0xffc3d44d
push 0
push 0
push 0
push edx
push 1
call fcn.0040eb50
add esp, 0x18
cmp byte [esp + 0x1a], 0
je 0x405e84
cmp byte [esp + 0x12c], 0
jne 0x405e8c
mov al, byte [esp + 0x124]
jmp 0x405e88
mov al, byte [esp + 0x11]
test al, al
jne 0x405ea3
push 0xffc3d44d
push 0
push 0
push 0
push 0x12
push 0
call fcn.0040eb50
add esp, 0x18
push 0xffc3d44d
push 0
push 0
push 0
push 9
push 2
call fcn.0040eb50
add esp, 0x18
test bl, bl
je 0x405edb
cmp byte [esp + 0x1b], 0
jne 0x405edb
push 0xffc3d44d
push 0
push 0
push 0
push edi
push 0
call fcn.0040eb50
add esp, 0x18
mov byte [0x4c0dbe], 1
jmp 0x406014
cmp byte [0x4c0dbe], 0
jne 0x405f24
mov eax, dword [esp + 0x12c]
mov ecx, dword [esp + 0x11c]
mov edx, dword [esp + 0x118]
push 0
push 0x3fff
push ebp
push eax
mov eax, dword [esp + 0x138]
push ecx
mov cl, byte [esp + 0x138]
push edx
push edi
jmp 0x4062c8
cmp byte [esp + 0x12c], 0
jne 0x405f62
mov al, byte [esp + 0x124]
cmp al, 0xa2
je 0x405f45
cmp al, 0xa3
je 0x405f45
cmp al, 0xa0
je 0x405f45
cmp al, 0xa1
jne 0x405f62
mov eax, dword [esp + 0x124]
push 0xffc3d44d
push 0
push 0
push 0
push eax
push 1
call fcn.0040eb50
add esp, 0x18
test byte [0x4c1ea5], 0xc
je 0x405f84
cmp byte [esp + 0x12c], 0
je 0x405f9b
mov al, byte [esp + 0x124]
cmp al, 0xa4
je 0x405f84
cmp al, 0xa5
jne 0x405f9b
push 0xffc3d44d
push 0
push 0
push 0
push 0x12
push 0
call fcn.0040eb50
add esp, 0x18
mov ecx, 0x3ffd
xor bl, bl
cmp word [esp + 0x20], cx
jne 0x405fcb
test byte [0x4c1ea5], 0x30
jne 0x405fcb
push 0xffc3d44d
push 0
push 0
push 0
push 0x10
push 0
call fcn.0040eb50
add esp, 0x18
mov bl, 1
push 0xffc3d44d
push 0
push 0
push 0
push 9
push 2
call fcn.0040eb50
add esp, 0x18
test bl, bl
je 0x406014
push 0xffc3d44d
push 0
push 0
push 0
push 0x10
push 1
call fcn.0040eb50
add esp, 0x18
jmp 0x406014
cmp byte [esi + 0x1e], 5
mov dword [esp + 0x28], eax
jne 0x406014
movzx edx, word [esi + 0x1c]
shl edx, 0x10
or dword [esp + 0x28], edx
cmp byte [esp + 0x13], 0
mov ebp, dword [esp + 0x24]
mov ebx, dword [esp + 0x12c]
mov edi, dword [esp + 0x1c]
mov eax, 0x68
mov word [ebp + 4], ax
je 0x406086
test bl, bl
je 0x4061b0
cmp byte [edi + 8], 0
je 0x406086
mov edi, dword [esp + 0x128]
mov esi, dword [esp + 0x124]
push 0xffc3d44e
push 0
push 0
push edi
push esi
push 1
call fcn.0040eb50
push 0xffc3d44d
push 0
push 0
push edi
push esi
push 2
call fcn.0040eb50
mov ecx, dword [esp + 0x58]
push 0
push SysReAllocString
push ecx
push ebp
push edi
jmp 0x40502c
test bl, bl
je 0x4061b0
cmp byte [edi + 4], 0
je 0x4060c6
cmp byte [edi + 0x10], 0
mov edx, dword [esp + 0x28]
je 0x4060bc
mov eax, dword [esp + 0x128]
mov ecx, dword [esp + 0x124]
push 0
push SysReAllocString
push edx
push ebp
push eax
push ecx
jmp 0x4050c9
push 1
push edx
push ebp
push ebx
jmp 0x4055a8
cmp byte [esp + 0x12], 0
jne 0x4060da
mov eax, dword [esp + 0x34]
test byte [eax], 1
je 0x406268
mov esi, dword [esp + 0x114]
cmp esi, dword [0x4c1fdc]
jne 0x406116
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x11c]
mov eax, dword [esp + 0x118]
push 0
push ecx
mov cl, byte [esp + 0x12c]
push ebp
push ebx
push edx
push eax
mov eax, dword [esp + 0x140]
push esi
jmp 0x4062c8
mov eax, dword [edi]
test eax, eax
je 0x406125
cmp dword [eax], 7
je 0x406125
mov al, 1
jmp 0x406127
xor al, al
cmp byte [edi + 0x10], 0
je 0x406188
cmp byte [esp + 0x33], 0
jne 0x406188
test al, al
jne 0x40618c
mov ecx, dword [esp + 0x128]
mov edx, dword [esp + 0x124]
push 0xffc3d44d
push 0
push 0
push ecx
push edx
push 0
call fcn.0040eb50
add esp, 0x18
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x11c]
mov edx, dword [esp + 0x118]
push 0
push eax
mov eax, dword [esp + 0x130]
push ebp
push ebx
push ecx
mov cl, byte [esp + 0x138]
push edx
push esi
jmp 0x4062c8
test al, al
je 0x40615b
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x128]
mov edx, dword [esp + 0x124]
push 0
push SysReAllocString
push eax
push ebp
push ecx
push edx
mov ecx, esi
jmp 0x4050d0
mov eax, dword [0x4c0dc0]
mov byte [edi + 0xf], 1
test eax, eax
je 0x4061c7
cmp byte [eax + 4], 0
je 0x4061c7
mov byte [eax + 0x11], 2
cmp byte [esp + 0x12], 0
je 0x406209
mov eax, dword [esp + 0x34]
or byte [eax], 8
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x11c]
mov edx, dword [esp + 0x118]
push 0
push eax
mov eax, dword [esp + 0x11c]
push ebp
push ebx
push ecx
mov cl, byte [esp + 0x138]
push edx
push eax
mov eax, dword [esp + 0x144]
jmp 0x4062c8
mov eax, dword [esp + 0x124]
cmp al, 0xa4
je 0x406218
cmp al, 0xa5
jne 0x406268
mov cl, byte [0x4c1ea5]
test cl, 0xc0
je 0x40624c
test cl, 0x33
jne 0x40624c
movzx ecx, byte [0x4be375]
push 0xffc3d44d
push 0
push 0
push 0
push ecx
push 2
call fcn.0040eb50
mov eax, dword [esp + 0x13c]
add esp, 0x18
mov edx, dword [esp + 0x128]
push 0xffc3d44d
push 0
push 0
push edx
push eax
push 1
call fcn.0040eb50
add esp, 0x18
test bl, bl
jne 0x406270
mov byte [edi + 0x10], 1
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x128]
mov edx, dword [esp + 0x124]
push 0
push SysReAllocString
push eax
push ebp
push ecx
push edx
jmp 0x4050c9
mov eax, dword [esp + 0x12c]
push 0
push 0x3fff
test al, al
sete cl
push edi
mov byte [esi + 0xf], 0
mov byte [esi + 0xc], cl
push eax
mov edx, dword [esp + 0x12c]
mov eax, dword [esp + 0x128]
push edx
push eax
push ebx
mov cl, byte [esp + 0x140]
mov eax, ebp
mov edx, dword [esp + 0x13c]
call fcn.00406510
add esp, 0x1c
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x100
ret