Function at 0x42c640
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0xcc
push ebx
push esi
push edi
mov edi, dword [esp + 0xdc]
mov esi, edi
imul esi, esi, 0x84
mov ebx, dword [esi + 0x51a8fc]
mov eax, dword [esi + 0x51a8a0]
and ebx, 0xffff
cmp eax, 8
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], eax
je 0x42d7da
cmp eax, 9
je 0x42d7da
mov ecx, dword [esi + 0x51a91c]
push ebp
xor ebp, ebp
cmp ecx, ebp
je 0x42c6d4
cmp eax, 6
jne 0x42c6d9
cmp byte [esi + 0x51a8fe], 0x23
jne 0x42c6e7
push 0x4ed8e0
call fcn.00425ad0
add esp, 4
cmp eax, ebp
mov dword [esi + 0x51a91c], eax
jl 0x42c6c9
push edi
mov dword [esi + 0x51a8a0], 8
call fcn.0042aa50
add esp, 4
pop ebp
pop edi
pop esi
pop ebx
add esp, 0xcc
ret
cmp eax, 6
je 0x42c6e7
cmp eax, 7
je 0x42c6e7
movzx ecx, byte [esi + 0x51a8fe]
jmp 0x42c6ec
mov ecx, 1
mov eax, ebx
and eax, 3
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x1c], eax
je 0x42c77f
mov ecx, dword [esi + 0x51a8a4]
movsx eax, bl
and eax, 2
shr eax, 1
push ecx
push eax
call fcn.00438220
add esp, 8
cmp eax, ebp
mov dword [0x4ed468], eax
je 0x42c6c9
cmp dword [0x4ce960], ebp
je 0x42c73c
or dword [esi + 0x51a8fc], 0x2000
mov dword [esp + 0x18], 0x11
jmp 0x42c744
mov dword [esp + 0x18], 1
movzx edi, word [0x4cdd06]
mov ecx, dword [0x4cdd08]
mov edx, dword [0x4cdd0c]
mov dword [esp + 0x44], edi
inc edi
sar edi, 3
mov dword [esp + 0x20], eax
imul edi, ecx
mov eax, dword [0x4cdd04]
and eax, 0x3f
mov dword [esp + 0x54], ecx
mov dword [esp + 0x50], edx
mov dword [esp + 0x58], eax
jmp 0x42c86d
test bl, 8
je 0x42c7b5
cmp ecx, 1
mov edi, dword [esp + 0x3c]
je 0x42c871
movzx eax, byte [esi + 0x51a8ff]
shl eax, 0x18
or eax, ebx
or eax, 0x10000
mov dword [esi + 0x51a8fc], eax
mov dword [esp + 0x4c], 1
jmp 0x42c871
test bl, 0x10
je 0x42c846
mov ecx, dword [esi + 0x51a8a4]
push ecx
push 2
call fcn.00437460
add esp, 8
cmp eax, 2
jne 0x42c6c9
test byte [0x4cdd04], 1
je 0x42c6c9
movzx edi, word [0x4cdd06]
mov eax, dword [0x4cdd08]
mov edx, dword [0x4cdd0c]
mov dword [esp + 0x44], edi
inc edi
sar edi, 3
imul edi, eax
mov dword [esp + 0x54], eax
mov eax, dword [esi + 0x51a8a4]
push eax
push 1
mov dword [esp + 0x58], edx
mov dword [esp + 0x44], edi
call fcn.0043b010
mov ecx, dword [esi + 0x51a8a4]
add eax, 0x14
mov dword [esp + 0x28], eax
mov eax, dword [0x4cdd04]
add esp, 8
and eax, 0x3f
mov dword [esp + 0x58], eax
mov dword [esp + 0x18], 0x11
mov dword [esp + 0x40], ecx
jmp 0x42c871
cmp ecx, 1
je 0x42c6c9
mov dword [esp + 0x20], ebp
xor edi, edi
mov dword [esp + 0x44], ebp
mov dword [esp + 0x50], ebp
mov dword [esp + 0x54], ebp
mov dword [esp + 0x58], ebp
mov dword [esp + 0x18], ebp
mov dword [esp + 0x40], ebp
mov dword [esp + 0x3c], edi
and ebx, 0x40
mov dword [esp + 0x60], ebx
je 0x42c8b8
mov ebp, dword [0x4ed444]
mov edx, dword [0x4ed440]
mov eax, dword [esi + 0x51a8d0]
mov ecx, dword [esi + 0x51a8c0]
mov ebx, ebp
imul ebx, ebx, 0x320
mov dword [esp + 0x48], edx
imul eax, ebx
mov edx, dword [esi + 0x51a8cc]
imul edx, ebp
add edx, ecx
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x28], ecx
add eax, edx
jmp 0x42c928
mov eax, dword [esi + 0x51a8c0]
push eax
push 2
call fcn.00437460
add esp, 8
cmp eax, 2
jne 0x42c6c9
test byte [0x4cdd04], 1
je 0x42c6c9
movzx ebp, word [0x4cdd06]
mov ebx, dword [0x4cdd08]
mov ecx, dword [esi + 0x51a8c0]
mov dword [esp + 0x48], ebp
inc ebp
sar ebp, 3
imul ebx, ebp
push ecx
push 1
mov dword [esp + 0x64], ebx
call fcn.0043b010
mov edx, dword [esi + 0x51a8cc]
mov ecx, dword [esi + 0x51a8d0]
imul edx, ebp
imul ecx, ebx
add esp, 8
add edx, eax
mov dword [esp + 0x28], eax
lea eax, [ecx + edx + 0x14]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x4c]
cmp eax, 1
je 0x42d485
cmp eax, 3
je 0x42d485
cmp eax, 2
je 0x42d485
test eax, eax
je 0x42d485
xor eax, eax
mov ecx, 0x1e
lea edi, [esp + 0x64]
rep stosd dword es:[edi], eax
cmp dword [esp + 0x10], 1
jne 0x42d460
mov eax, dword [esi + 0x51a920]
test eax, eax
je 0x42cf0b
movzx edi, byte [eax]
movzx ecx, byte [eax + 1]
push eax
push 0x8004
mov dword [esp + 0x28], edi
mov dword [esp + 0x18], ecx
call fcn.0043b010
imul edi, edi, 0x84
mov eax, dword [edi + 0x51a8a0]
add esp, 8
cmp eax, 0xa
jne 0x42ceef
mov eax, dword [esi + 0x51a90c]
test eax, eax
je 0x42ceef
mov ecx, dword [esi + 0x51a8cc]
mov eax, dword [edi + 0x51a8cc]
cmp ecx, eax
mov dword [esp + 0x2c], ecx
jl 0x42c9d1
mov dword [esp + 0x2c], eax
mov edx, dword [esi + 0x51a8d0]
mov ebx, dword [edi + 0x51a8d0]
cmp edx, ebx
jge 0x42c9e3
mov ebx, edx
mov edx, dword [edi + 0x51a8e4]
add eax, edx
mov edx, dword [esi + 0x51a8e4]
add ecx, edx
cmp ecx, eax
mov dword [esp + 0x30], ebx
jle 0x42ca05
sub ecx, dword [esp + 0x2c]
mov dword [esp + 0x34], ecx
jmp 0x42ca0d
sub eax, dword [esp + 0x2c]
mov dword [esp + 0x34], eax
mov ecx, dword [edi + 0x51a8e8]
mov eax, dword [edi + 0x51a8d0]
mov edx, dword [esi + 0x51a8e8]
add eax, ecx
mov ecx, dword [esi + 0x51a8d0]
add ecx, edx
cmp ecx, eax
jle 0x42ca35
sub ecx, ebx
mov dword [esp + 0x38], ecx
jmp 0x42ca3b
sub eax, ebx
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x10]
test eax, eax
je 0x42cbb2
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x42ca83
mov eax, dword [0x4ed468]
push eax
push 0
call fcn.0043b010
push eax
push 2
mov dword [esp + 0x50], eax
call fcn.0043b010
mov eax, dword [esi + 0x51a8fc]
add esp, 0x10
test ah, 0x20
je 0x42ca99
and eax, 0xffffdfff
mov dword [esi + 0x51a8fc], eax
jmp 0x42ca99
test byte [esp + 0x14], 0x10
je 0x42ca99
mov ecx, dword [esp + 0x40]
push ecx
push 2
call fcn.0043b010
add esp, 8
mov eax, dword [esi + 0x51a8b4]
mov edx, dword [esi + 0x51a8b0]
mov dword [0x4d1ec4], eax
mov eax, dword [edi + 0x51a8fc]
and eax, 0xffff
test al, 3
mov dword [0x4d1ec0], edx
je 0x42cb01
mov ecx, dword [edi + 0x51a8a4]
movsx eax, al
and eax, 2
shr eax, 1
push ecx
push eax
call fcn.00438220
add esp, 8
test eax, eax
mov dword [0x4ed468], eax
je 0x42c6c9
mov eax, dword [0x4ce960]
test eax, eax
jne 0x42cb0b
push 0x20
push 0
call fcn.0043aec0
add esp, 8
mov dword [edi + 0x51a8a4], eax
jmp 0x42cb0b
mov dword [0x4ed468], 0
push 0x40
push 1
call fcn.0043aec0
mov edx, dword [0x4ed468]
mov ecx, dword [esp + 0x34]
mov dword [eax], edx
mov edx, dword [edi + 0x51a8cc]
sub edx, ecx
mov dword [eax + 4], edx
mov edx, dword [edi + 0x51a8d0]
sub edx, ebx
mov dword [eax + 8], edx
mov edx, dword [edi + 0x51a8e4]
mov dword [eax + 0xc], edx
mov edx, dword [edi + 0x51a8e8]
mov dword [eax + 0x10], edx
mov edx, dword [edi + 0x51a8b0]
mov dword [eax + 0x14], edx
mov edx, dword [edi + 0x51a8b4]
mov dword [eax + 0x18], edx
mov edx, dword [esi + 0x51a8cc]
sub edx, ecx
mov dword [eax + 0x1c], edx
mov ecx, dword [esi + 0x51a8d0]
sub ecx, ebx
mov dword [eax + 0x20], ecx
mov edx, dword [esi + 0x51a8e4]
mov dword [eax + 0x24], edx
mov ecx, dword [esi + 0x51a8e8]
mov edx, dword [esp + 0x28]
mov dword [eax + 0x28], ecx
push 0
mov dword [esp + 0xc8], eax
mov eax, dword [edi + 0x51a8fc]
push 0
or eax, 0x100
push 4
push edx
mov dword [edi + 0x51a8fc], eax
call fcn.00401b50
add esp, 0x18
jmp 0x42cef3
mov ebx, dword [esp + 0x38]
imul ebx, dword [esp + 0x34]
imul ebx, ebp
lea eax, [ebx + 0x14]
push eax
push 1
call fcn.0043aec0
mov ecx, dword [esp + 0x50]
mov dword [0x4cdce4], eax
mov dword [eax], 0x4b504e55
mov edx, dword [0x4cdce4]
shl ecx, 0x10
or ecx, 1
mov dword [edx + 4], ecx
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x24], ecx
mov ecx, dword [0x4cdce4]
mov dword [ecx + 8], edx
mov ecx, dword [0x4cdce4]
mov edx, dword [esp + 0x40]
mov dword [ecx + 0xc], edx
mov ecx, dword [0x4cdce4]
mov dword [ecx + 0x10], ebx
mov ebx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x64]
imul ebx, ebp
push edx
mov edx, dword [esp + 0x34]
push ebx
mov dword [esp + 0x20], eax
push ebx
push ecx
add eax, 0x14
push eax
mov eax, dword [esp + 0x4c]
imul eax, ecx
mov ecx, dword [esp + 0x48]
imul ecx, ebp
add eax, edx
add ecx, eax
push ecx
call fcn.00427560
mov edx, dword [edi + 0x51a90c]
push edx
push 1
call fcn.0043b010
mov dword [0x4cdce4], eax
movzx ecx, word [eax + 6]
mov edx, dword [eax + 8]
inc ecx
shr ecx, 3
imul edx, ecx
mov ecx, dword [eax + 0xc]
push ecx
mov ecx, dword [esp + 0x5c]
push edx
push ebx
push edx
mov edx, dword [edi + 0x51a8d0]
sub edx, ecx
imul edx, dword [esp + 0x6c]
sub edx, dword [esp + 0x64]
add edx, dword [edi + 0x51a8cc]
mov ecx, dword [esp + 0x48]
imul edx, ebp
lea edx, [edx + ecx + 0x14]
push edx
add eax, 0x14
push eax
call fcn.00427560
mov eax, dword [edi + 0x51a90c]
add esp, 0x40
push eax
push 2
call fcn.0043b010
mov eax, dword [esp + 0x1c]
add esp, 8
test ah, 1
je 0x42cd90
test ah, 4
jne 0x42cd90
mov ecx, dword [esi + 0x51a90c]
push ecx
push 1
call fcn.0043b010
mov ecx, dword [esp + 0x24]
mov dword [0x4cdce4], eax
mov dword [eax], 0x4b504e55
mov edx, dword [0x4cdce4]
mov dword [edx + 4], ecx
mov edx, dword [esi + 0x51a8e4]
mov ecx, dword [0x4cdce4]
mov dword [ecx + 8], edx
mov edx, dword [esi + 0x51a8e8]
mov ecx, dword [0x4cdce4]
mov dword [ecx + 0xc], edx
mov edx, dword [esi + 0x51a8e4]
imul edx, dword [esi + 0x51a8e8]
mov ecx, dword [0x4cdce4]
imul edx, ebp
mov dword [ecx + 0x10], edx
mov ecx, dword [esi + 0x51a8e4]
mov edx, dword [esi + 0x51a8e8]
imul ecx, ebp
push edx
mov edx, dword [esp + 0x3c]
push ecx
push ecx
mov ecx, dword [esp + 0x40]
add eax, 0x14
push ebx
push eax
mov eax, dword [esi + 0x51a8d0]
sub eax, edx
imul eax, dword [esp + 0x50]
mov edx, dword [esi + 0x51a8cc]
sub eax, ecx
mov ecx, dword [esp + 0x2c]
add eax, edx
imul eax, ebp
lea edx, [eax + ecx + 0x14]
push edx
call fcn.00427560
mov eax, dword [esi + 0x51a90c]
push eax
push 2
call fcn.0043b010
mov ecx, dword [esi + 0x51a8cc]
mov edx, dword [esi + 0x51a8d0]
add esp, 0x28
mov dword [esi + 0x51a910], ecx
mov dword [esi + 0x51a914], edx
mov eax, dword [esp + 0x58]
mov edx, dword [esi + 0x51a8d0]
mov ecx, dword [0x4ed468]
mov dword [0x4ce980], eax
sub edx, dword [esp + 0x30]
imul edx, dword [esp + 0x34]
mov eax, dword [esi + 0x51a8cc]
mov dword [0x4ce984], ecx
sub edx, dword [esp + 0x2c]
add edx, eax
mov eax, dword [esp + 0x10]
imul edx, ebp
lea ecx, [edx + eax + 0x14]
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x44]
mov dword [0x4ce98c], edx
mov edx, dword [esi + 0x51a8b0]
mov dword [0x4ce988], ecx
mov ecx, dword [esp + 0x48]
mov dword [0x4ce9a0], edx
mov edx, dword [esi + 0x51a8e8]
mov dword [0x4ce994], eax
mov eax, dword [esi + 0x51a8b4]
mov dword [0x4ce998], ecx
mov ecx, dword [esi + 0x51a8e4]
mov dword [0x4ce9ac], edx
movzx edx, byte [esi + 0x51a8ff]
mov dword [0x4ce9a4], eax
mov eax, dword [esp + 0x54]
mov dword [0x4ce9a8], ecx
mov ecx, dword [esp + 0x50]
push 0x4ce980
mov dword [0x4ce990], ebx
mov dword [0x4ce9b0], eax
mov dword [0x4ce9b4], ecx
mov dword [0x4ce9b8], edx
call fcn.004360b0
mov eax, dword [0x4d1edc]
mov ecx, dword [0x4d1ed8]
push 0
push 0
push eax
push ecx
push 0
push 0
push 0
push 0
call fcn.00435fa0
mov eax, dword [esi + 0x51a8fc]
add esp, 0x24
test ah, 0x20
je 0x42ce87
mov edx, dword [0x4ed468]
push edx
push 0x8004
jmp 0x42ce90
mov eax, dword [esi + 0x51a8a4]
push eax
push 2
call fcn.0043b010
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x20]
add esp, 8
push eax
or edx, 0x10
push 0
mov dword [0x4ed468], eax
mov dword [esp + 0x20], edx
call fcn.0043b010
push eax
push 2
mov dword [esp + 0x50], eax
call fcn.0043b010
mov eax, dword [edi + 0x51a8fc]
mov ecx, dword [esp + 0x30]
push 0
push 0
or eax, 0x100
push 4
push ecx
mov dword [edi + 0x51a8fc], eax
call fcn.00401b50
add esp, 0x20
mov dword [esp + 0xbc], 0
mov ebx, dword [esp + 0x30]
mov eax, dword [esp + 0x60]
test eax, eax
je 0x42d337
mov eax, dword [esp + 0x18]
or eax, 8
jmp 0x42d34c
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x42d0ca
cmp dword [esp + 0x58], 2
jne 0x42d0ca
mov eax, dword [esp + 0x14]
test ah, 4
jne 0x42d0ca
mov edx, dword [esi + 0x51a8e4]
imul edx, dword [esi + 0x51a8e8]
imul edx, ebp
add edx, 0x14
push edx
push 1
call fcn.0043aec0
mov edi, dword [esp + 0x50]
mov ecx, eax
mov dword [0x4cdce4], ecx
mov dword [ecx], 0x4b504e55
mov edx, dword [0x4cdce4]
mov eax, edi
shl eax, 0x10
or eax, 1
mov dword [edx + 4], eax
mov eax, dword [esi + 0x51a8e4]
mov edx, dword [0x4cdce4]
mov dword [edx + 8], eax
mov eax, dword [esi + 0x51a8e8]
mov edx, dword [0x4cdce4]
mov dword [edx + 0xc], eax
mov eax, dword [esi + 0x51a8e4]
imul eax, dword [esi + 0x51a8e8]
mov edx, dword [0x4cdce4]
imul eax, ebp
mov dword [edx + 0x10], eax
mov eax, dword [esi + 0x51a8e4]
mov edx, dword [esi + 0x51a8e8]
imul eax, ebp
push edx
push eax
push eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x24], ecx
add ecx, 0x14
push ebx
push ecx
push eax
call fcn.00427560
mov eax, dword [esp + 0x30]
mov ecx, dword [0x4ed468]
mov edx, dword [esp + 0x5c]
add eax, 0x14
mov dword [0x4ce988], eax
mov eax, dword [esi + 0x51a8e4]
mov dword [0x4ce984], ecx
mov ecx, eax
imul ecx, ebp
mov dword [0x4ce98c], edx
mov edx, dword [esp + 0x64]
mov dword [0x4ce9a8], eax
mov eax, dword [esi + 0x51a8e8]
mov dword [0x4ce990], ecx
mov ecx, dword [esi + 0x51a8b0]
mov dword [0x4ce994], edx
mov edx, dword [esi + 0x51a8b4]
mov dword [0x4ce9ac], eax
movzx eax, byte [esi + 0x51a8ff]
mov dword [0x4ce9a0], ecx
mov ecx, dword [esp + 0x74]
mov dword [0x4ce9a4], edx
mov edx, dword [esp + 0x70]
push 0x4ce980
mov dword [0x4ce980], 2
mov dword [0x4ce998], edi
mov dword [0x4ce9b0], ecx
mov dword [0x4ce9b4], edx
mov dword [0x4ce9b8], eax
call fcn.004360b0
mov ecx, dword [0x4d1edc]
mov edx, dword [0x4d1ed8]
push 0
push 0
push ecx
push edx
push 0
push 0
push 0
push 0
call fcn.00435fa0
mov eax, dword [esi + 0x51a8fc]
add esp, 0x44
test ah, 0x20
je 0x42d0a2
mov eax, dword [0x4ed468]
push eax
push 0x8004
jmp 0x42d0ab
mov ecx, dword [esi + 0x51a8a4]
push ecx
push 2
call fcn.0043b010
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x18]
add esp, 8
or eax, 0x10
mov dword [0x4ed468], edx
mov dword [esp + 0x18], eax
jmp 0x42d0e5
mov eax, dword [esi + 0x51a8b0]
mov ecx, dword [esi + 0x51a8b4]
mov edi, dword [esp + 0x48]
mov dword [0x4d1ec0], eax
mov dword [0x4d1ec4], ecx
mov eax, dword [esp + 0x14]
test ah, 1
je 0x42d18c
test ah, 4
jne 0x42d18c
mov edx, dword [esi + 0x51a90c]
push edx
push 1
call fcn.0043b010
mov dword [0x4cdce4], eax
mov dword [eax], 0x4b504e55
mov ecx, dword [0x4cdce4]
shl edi, 0x10
or edi, 1
mov dword [ecx + 4], edi
mov edx, dword [esi + 0x51a8e4]
mov ecx, dword [0x4cdce4]
mov dword [ecx + 8], edx
mov edx, dword [esi + 0x51a8e8]
mov ecx, dword [0x4cdce4]
mov dword [ecx + 0xc], edx
mov edx, dword [esi + 0x51a8e4]
imul edx, dword [esi + 0x51a8e8]
mov ecx, dword [0x4cdce4]
imul edx, ebp
mov dword [ecx + 0x10], edx
mov ecx, dword [esi + 0x51a8e4]
mov edx, dword [esi + 0x51a8e8]
imul ecx, ebp
push edx
push ecx
push ecx
add eax, 0x14
push ebx
push eax
mov eax, dword [esp + 0x40]
push eax
call fcn.00427560
mov ecx, dword [esi + 0x51a90c]
push ecx
push 2
call fcn.0043b010
add esp, 0x28
mov eax, dword [esi + 0x51a8d0]
mov edx, dword [esi + 0x51a8cc]
mov edi, dword [esp + 0x20]
mov dword [esi + 0x51a914], eax
mov eax, dword [esp + 0x14]
and eax, 0x10
mov dword [esi + 0x51a910], edx
mov dword [esp + 0x28], eax
je 0x42d1d6
mov eax, dword [esi + 0x51a8e4]
mov ecx, dword [esi + 0x51a8e8]
imul eax, ebp
mov edx, dword [esp + 0x24]
push ecx
push eax
push eax
push ebx
push edi
push edx
call fcn.00427560
add esp, 0x18
mov eax, dword [esp + 0x14]
test ah, 8
je 0x42d23d
mov eax, dword [0x5510ac]
push eax
push 1
call fcn.0043b010
mov ecx, dword [esp + 0x24]
add esp, 8
add eax, 0x14
test ecx, ecx
push 0x258
mov ecx, ebp
je 0x42d215
imul ecx, ecx, 0x320
push ecx
push ecx
mov ecx, dword [esp + 0x48]
push ecx
push eax
lea edx, [edi + 0x14]
push edx
jmp 0x42d224
imul ecx, ecx, 0x320
push ecx
push ecx
push ebx
push eax
mov eax, dword [esp + 0x38]
push eax
call fcn.00427560
mov ecx, dword [0x5510ac]
add esp, 0x18
push ecx
push 2
call fcn.0043b010
add esp, 8
test byte [esi + 0x51a900], 1
je 0x42d2bb
mov edx, dword [0x5510a4]
push edx
push 1
call fcn.0043b010
imul ebp, ebp, 0x320
mov ecx, dword [esp + 0x24]
add esp, 8
push 0x258
add eax, 0x14
test ecx, ecx
push ebp
push ebp
je 0x42d29b
mov ecx, dword [esp + 0x48]
push ecx
push eax
mov eax, dword [esi + 0x51a8b0]
imul eax, dword [esp + 0x58]
cdq
and edx, 7
add eax, edx
mov edx, dword [esi + 0x51a8b4]
imul edx, ecx
sar eax, 3
add eax, edi
lea eax, [edx + eax + 0x14]
push eax
jmp 0x42d2a2
mov ecx, dword [esp + 0x30]
push ebx
push eax
push ecx
call fcn.00427560
mov edx, dword [0x5510a4]
add esp, 0x18
push edx
push 2
call fcn.0043b010
add esp, 8
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x42d2f7
mov eax, dword [0x4ed468]
push eax
push 0
call fcn.0043b010
push eax
push 2
mov dword [esp + 0x50], eax
call fcn.0043b010
mov eax, dword [esi + 0x51a8fc]
add esp, 0x10
test ah, 0x20
je 0x42d30e
and eax, 0xffffdfff
mov dword [esi + 0x51a8fc], eax
jmp 0x42d30e
mov eax, dword [esp + 0x28]
test eax, eax
je 0x42d30e
mov ecx, dword [esp + 0x40]
push ecx
push 2
call fcn.0043b010
add esp, 8
mov edx, dword [esi + 0x51a8cc]
mov eax, dword [esi + 0x51a8e4]
mov ecx, dword [esi + 0x51a8e8]
mov ebx, dword [esi + 0x51a8d0]
mov dword [esp + 0x2c], edx
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], ecx
jmp 0x42cef3
mov edx, dword [esi + 0x51a8c0]
push edx
push 2
call fcn.0043b010
mov eax, dword [esp + 0x20]
add esp, 8
mov ecx, dword [esp + 0x14]
test ch, 1
je 0x42d35a
test ch, 4
jne 0x42d36d
mov edi, dword [esp + 0x4c]
cmp edi, 0x19
je 0x42d371
cmp edi, 0x24
je 0x42d371
or eax, 0x20
jmp 0x42d371
mov edi, dword [esp + 0x4c]
test ch, 0x10
je 0x42d379
or eax, 0x40
mov ecx, dword [esi + 0x51a8ec]
mov edx, dword [esi + 0x51a8f0]
mov dword [esp + 0x6c], eax
movzx eax, word [esi + 0x51a918]
mov dword [esp + 0xb0], eax
mov eax, dword [esi + 0x51a8f4]
mov dword [esp + 0x78], eax
mov eax, dword [0x4d1ec0]
mov dword [esp + 0x70], ecx
mov ecx, dword [esi + 0x51a8f8]
mov dword [esp + 0x74], edx
mov edx, dword [esp + 0x40]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x80], ecx
mov ecx, dword [0x4d1ec4]
mov dword [esp + 0x84], edx
mov edx, dword [esi + 0x51a8c0]
mov dword [esp + 0x94], eax
mov dword [esp + 0x8c], ecx
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x90], edx
mov edx, dword [esp + 0x38]
lea eax, [esp + 0x64]
push eax
mov dword [esp + 0x6c], edi
mov dword [esp + 0x9c], ebx
mov dword [esp + 0xa4], ecx
mov dword [esp + 0xa8], edx
call fcn.00425ad0
add esp, 4
test eax, eax
mov dword [esi + 0x51a91c], eax
jl 0x42c6c9
cmp dword [esi + 0x51a8ec], 0xffffffff
je 0x42d460
cmp edi, 0x23
je 0x42d460
movzx ecx, byte [esi + 0x51a8ff]
mov edx, dword [esi + 0x51a8fc]
shl ecx, 0x18
and edx, 0xffff
or ecx, edx
or ecx, 0x10000
mov dword [esi + 0x51a8fc], ecx
mov eax, dword [esp + 0xe0]
push eax
mov dword [esi + 0x51a8a0], 8
call fcn.0042aa50
add esp, 4
pop ebp
pop edi
pop esi
pop ebx
add esp, 0xcc
ret
mov eax, dword [esp + 0x14]
and eax, 0x100
mov dword [esp + 0x5c], eax
je 0x42d50d
cmp dword [esp + 0x10], 7
je 0x42d50d
mov ecx, dword [esi + 0x51a90c]
push ecx
push 1
call fcn.0043b010
mov ecx, dword [esi + 0x51a8e4]
mov edx, dword [esi + 0x51a8e8]
imul ecx, ebp
push edx
push ecx
push ecx
mov dword [esp + 0x3c], eax
add eax, 0x14
push ebx
push eax
mov eax, dword [esp + 0x40]
push eax
call fcn.00427560
mov ecx, dword [esi + 0x51a8e4]
mov eax, dword [esp + 0x48]
mov dword [eax + 8], ecx
mov edx, dword [esi + 0x51a8e8]
mov dword [eax + 0xc], edx
mov eax, dword [esi + 0x51a90c]
push eax
push 2
call fcn.0043b010
mov eax, dword [esi + 0x51a8cc]
mov dword [esi + 0x51a910], eax
mov eax, dword [esi + 0x51a8d0]
add esp, 0x28
mov dword [esi + 0x51a914], eax
mov eax, dword [0x4d8160]
mov ecx, dword [esi + 0x51a8cc]
mov edx, dword [esi + 0x51a8d0]
shl eax, 4
mov dword [eax + 0x4d6160], ecx
mov dword [eax + 0x4d6164], edx
mov edx, dword [esi + 0x51a8e4]
add edx, ecx
mov ecx, dword [esi + 0x51a8e8]
mov dword [eax + 0x4d6168], edx
mov edx, dword [esi + 0x51a8d0]
add edx, ecx
mov dword [eax + 0x4d616c], edx
inc dword [0x4d8160]
mov eax, dword [esp + 0x14]
and eax, 8
mov dword [esp + 0x28], eax
je 0x42d5cd
mov eax, dword [esp + 0x60]
test eax, eax
jne 0x42d57b
mov eax, dword [esi + 0x51a8c0]
push eax
push 2
call fcn.0043b010
add esp, 8
mov eax, dword [esp + 0x60]
test eax, eax
mov ecx, dword [esi + 0x51a920]
mov edx, dword [esi + 0x51a8c0]
mov dword [ecx + 0x24], edx
je 0x42d5a1
mov eax, dword [esi + 0x51a920]
mov dword [eax + 0x28], 3
jmp 0x42d5ae
mov ecx, dword [esi + 0x51a920]
mov dword [ecx + 0x28], 0
mov edx, dword [esi + 0x51a920]
mov eax, dword [esi + 0x51a8a4]
push edx
push eax
push 0
push 0xfffffffffffffffe
call fcn.0042c580
add esp, 0x10
jmp 0x42d6f2
cmp dword [esp + 0x4c], 3
jne 0x42d5db
mov eax, 0xffffff
jmp 0x42d5dd
xor eax, eax
mov edx, dword [esp + 0x58]
mov dword [0x4ce980], edx
mov edx, dword [esp + 0x20]
mov dword [0x4ce984], edx
mov edx, dword [esp + 0x24]
mov dword [0x4ce988], edx
mov edx, dword [esp + 0x44]
mov dword [0x4ce994], edx
mov edx, dword [esp + 0x48]
mov dword [0x4ce99c], eax
mov eax, dword [esi + 0x51a8b0]
mov dword [0x4ce998], edx
mov edx, dword [esi + 0x51a8b4]
mov dword [0x4ce9a0], eax
mov eax, dword [esi + 0x51a8e4]
mov dword [0x4ce9a4], edx
movzx edx, byte [esi + 0x51a8ff]
mov dword [0x4ce9a8], eax
mov eax, dword [esp + 0x54]
mov dword [0x4ce9ac], ecx
mov ecx, dword [esp + 0x50]
push 0x4ce980
mov dword [0x4ce98c], edi
mov dword [0x4ce990], ebx
mov dword [0x4ce9b0], eax
mov dword [0x4ce9b4], ecx
mov dword [0x4ce9b8], edx
call fcn.004360b0
mov al, byte [esi + 0x51a900]
add esp, 4
test al, 1
je 0x42d6f2
mov eax, dword [0x5510a4]
push eax
push 1
call fcn.0043b010
imul ebp, ebp, 0x320
mov ecx, dword [esp + 0x24]
add esp, 8
push 0x258
add eax, 0x14
test ecx, ecx
push ebp
push ebp
je 0x42d6d2
mov ecx, dword [0x4ce9a4]
push edi
imul ecx, edi
push eax
mov eax, dword [0x4ce9a0]
imul eax, dword [esp + 0x58]
cdq
and edx, 7
add eax, edx
mov edx, dword [esp + 0x34]
sar eax, 3
add eax, edx
lea edx, [ecx + eax + 0x14]
push edx
jmp 0x42d6d9
push ebx
push eax
mov eax, dword [esp + 0x38]
push eax
call fcn.00427560
mov ecx, dword [0x5510a4]
add esp, 0x18
push ecx
push 2
call fcn.0043b010
add esp, 8
mov eax, dword [esp + 0x1c]
xor edi, edi
cmp eax, edi
je 0x42d73f
mov eax, dword [esi + 0x51a8fc]
test ah, 0x20
je 0x42d72e
mov edx, dword [0x4ed468]
push edx
push 0x8004
call fcn.0043b010
mov eax, dword [esi + 0x51a8fc]
add esp, 8
and eax, 0xffffdfff
mov dword [esi + 0x51a8fc], eax
jmp 0x42d73f
mov eax, dword [esi + 0x51a8a4]
push eax
push 2
call fcn.0043b010
add esp, 8
cmp dword [esp + 0x28], edi
jne 0x42d75c
cmp dword [esp + 0x60], edi
jne 0x42d75c
mov ecx, dword [esi + 0x51a8c0]
push ecx
push 2
call fcn.0043b010
add esp, 8
cmp dword [esp + 0x5c], edi
je 0x42d777
pop ebp
pop edi
mov dword [esi + 0x51a8a0], 0xa
pop esi
pop ebx
add esp, 0xcc
ret
mov eax, dword [esi + 0x51a90c]
cmp eax, edi
je 0x42d792
push eax
push 4
call fcn.0043b010
add esp, 8
mov dword [esi + 0x51a90c], edi
mov bl, byte [esp + 0x14]
test bl, 1
je 0x42d7af
mov edx, dword [esi + 0x51a8a4]
push edx
push 0x8004
call fcn.0043b010
add esp, 8
test bl, 2
je 0x42d7c9
test bl, bl
jns 0x42d7c9
mov eax, dword [esi + 0x51a8a4]
push eax
push 4
call fcn.0043b010
add esp, 8
pop ebp
mov dword [esi + 0x51a8a0], edi
pop edi
pop esi
pop ebx
add esp, 0xcc
ret
push edi
call fcn.0042aa50
add esp, 4
pop edi
pop esi
pop ebx
add esp, 0xcc
ret