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

Disassembly:
sub esp, 0xe0
mov edx, dword [ecx + 0xca4]
xor eax, eax
cmp edx, eax
mov dword [esp + 0xc], ecx
je 0x4638ef
add esp, 0xe0
ret 0x20
mov edx, 6
push ebx
mov dword [esp + 0x34], edx
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0xfc]
push ebp
push esi
cmp edx, eax
push edi
mov dword [esp + 0x48], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x58], eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x28], eax
je 0x463950
push edx
lea ecx, [esp + 0x44]
call fcn.00454d90
mov eax, dword [esp + 0xf4]
lea ecx, [esp + 0x54]
push eax
call fcn.00454d90
mov edi, 1
jmp 0x463ac0
mov ebp, dword [esp + 0xfc]
mov edx, dword [ebp]
cmp edx, eax
je 0x463963
mov edx, dword [edx + 4]
jmp 0x463965
xor edx, edx
cmp byte [edx], 0
jne 0x46398e
mov ecx, dword [esp + 0xf4]
push ecx
lea ecx, [esp + 0x44]
call fcn.00454d90
lea ecx, [esp + 0x54]
call fcn.00454b70
mov edi, 1
jmp 0x463ac0
cmp dword [esp + 0xf4], eax
je 0x463a9e
mov edi, dword [esp + 0x1c]
push 0
lea ecx, [esp + 0x34]
mov edx, dword [edi + 0x1108]
push edx
call fcn.0043eb30
mov esi, dword [esp + 0x104]
mov ebx, dword [esp + 0x10c]
neg esi
sbb esi, esi
mov edx, dword [esp + 0xf4]
not esi
lea eax, [esp + 0x64]
lea ecx, [esp + 0x40]
and esi, eax
push esi
push ebx
push ecx
push ebp
push edx
mov ecx, edi
call fcn.0045b360
lea ecx, [esp + 0x30]
mov edi, eax
call fcn.00480060
test edi, edi
jne 0x463a8b
mov ecx, dword [esp + 0xf4]
push edi
call fcn.00455eb0
mov ecx, dword [eax + 0x34]
test ecx, ecx
je 0x463a70
push edi
mov edi, dword [esp + 0x20]
lea ecx, [esp + 0x6c]
mov eax, dword [edi + 0x1108]
push eax
call fcn.0043eb30
push edi
lea ecx, [esp + 0x34]
call fcn.0043eb40
mov edx, dword [esp + 0xf4]
push esi
lea ecx, [esp + 0x44]
push ebx
push ecx
push ebp
push edx
mov ecx, edi
call fcn.0045b360
mov edi, eax
test edi, edi
je 0x463a5a
cmp dword [esp + 0x40], 3
jne 0x463a5a
mov ecx, dword [esp + 0x48]
push 0
call fcn.00455eb0
mov edi, dword [eax + 0x38]
lea ecx, [esp + 0x30]
call fcn.0043eb70
lea ecx, [esp + 0x68]
call fcn.00480060
test edi, edi
jne 0x463a8b
mov ecx, dword [esp + 0xf4]
push esi
lea eax, [esp + 0x44]
push ebx
push eax
push ebp
push ecx
mov ecx, dword [esp + 0x30]
call fcn.0045b360
xor edi, edi
mov edx, dword [esp + 0xf4]
lea ecx, [esp + 0x54]
push edx
call fcn.00454d90
jmp 0x463ac0
mov eax, dword [esp + 0x10c]
lea edx, [esp + 0x54]
push eax
lea eax, [esp + 0x44]
push edx
mov edx, dword [esp + 0x100]
push eax
push ebp
push edx
call fcn.0045bdb0
mov edi, eax
mov ebx, dword [esp + 0x1c]
mov eax, dword [ebx + 0x1138]
mov ecx, dword [ebx + 0xb60]
cmp ecx, eax
jge 0x463adc
cmp dword [ebx + 0xd60], eax
jl 0x463ae8
mov dword [ebx + 0xca4], 1
xor edi, edi
mov eax, dword [ebx + 0xca4]
xor ebp, ebp
cmp eax, ebp
jne 0x46486f
cmp edi, ebp
je 0x46486f
cmp dword [esp + 0x40], 3
jne 0x46486f
mov ecx, dword [esp + 0x48]
push ebp
mov esi, ecx
mov dword [esp + 0x1c], esi
call fcn.00455eb0
push eax
push ebx
lea ecx, [esp + 0xe8]
call fcn.0043e910
cmp esi, ebp
mov byte [esp + 0x13], 0
je 0x463bf7
mov ecx, esi
call fcn.00455df0
test eax, eax
je 0x463bf7
mov edi, esi
mov dword [esp + 0x38], ebp
mov ecx, edi
mov dword [esp + 0x30], 6
mov dword [esp + 0x34], ebp
call fcn.00455df0
mov esi, eax
mov ecx, esi
call fcn.00455df0
test eax, eax
jne 0x463b74
mov ecx, esi
call fcn.004539f0
mov esi, eax
cmp esi, ebp
je 0x463bc7
push ebp
lea eax, [esp + 0x34]
push ebp
push eax
push str.__constructor__
push esi
mov ecx, ebx
call fcn.0045b280
test eax, eax
je 0x463bc7
cmp dword [esp + 0x30], 3
jne 0x463bc7
lea ecx, [esp + 0x40]
push ecx
lea ecx, [esp + 0x58]
call fcn.00454fb0
lea edx, [esp + 0x30]
lea ecx, [esp + 0x40]
push edx
mov dword [esp + 0xf8], edi
mov byte [esp + 0x17], 1
call fcn.00454fb0
mov eax, dword [esp + 0x48]
mov dword [esp + 0x18], eax
lea ecx, [esp + 0x30]
call fcn.00454b70
mov ecx, dword [esp + 0x34]
cmp ecx, ebp
je 0x463bf7
mov eax, dword [ecx]
mov edx, eax
and edx, 0xfffffffe
not eax
dec edx
and eax, 1
xor edx, eax
mov dword [ecx], edx
mov eax, dword [ecx]
test eax, 0xfffffffe
jg 0x463bf7
call fcn.00456510
cmp dword [esp + 0x104], ebp
je 0x463cbf
cmp dword [esp + 0x108], ebp
jne 0x463c17
push ebx
lea ecx, [esp + 0x58]
call fcn.00454ea0
lea eax, [esp + 0x54]
mov ecx, ebx
push eax
call fcn.00464db0
mov esi, eax
cmp esi, ebp
je 0x463cbf
lea ecx, [ebx + 0xcec]
push ecx
mov ecx, dword [esp + 0x1c]
call fcn.00453360
cmp eax, ebp
je 0x463c4a
push ebp
push eax
mov ecx, esi
call fcn.00453a60
mov ecx, ebx
call fcn.00469d90
mov ecx, eax
call fcn.004528a0
test al, al
jne 0x463c75
push 0x101
lea edx, [esp + 0x44]
push ebp
lea eax, [ebx + 0xcfc]
push edx
push eax
mov ecx, esi
call fcn.00453b10
push 0x81
lea ecx, [esp + 0x44]
push ebp
lea edx, [ebx + 0xd08]
push ecx
push edx
mov ecx, esi
call fcn.00453b10
mov al, byte [esp + 0x110]
mov dword [esp + 0xf4], esi
mov esi, dword [esp + 0xf8]
test al, al
je 0x463cb2
cmp esi, ebp
je 0x463cc6
mov ecx, esi
call fcn.0044d6e0
cmp esi, ebp
je 0x463cc6
mov ecx, esi
call fcn.0044d770
jmp 0x463cc6
mov esi, dword [esp + 0xf8]
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 0x70]
cmp eax, ebp
mov dword [esp + 0x68], eax
je 0x463edf
lea ecx, [esp + 0x88]
mov dword [esp + 0x8c], ebp
call fcn.0043d9b0
lea ecx, [esp + 0x98]
call fcn.004649b0
mov edi, dword [esp + 0x100]
mov eax, edi
shl eax, 4
add eax, 4
push eax
call fcn.0041ed90
add esp, 4
cmp eax, ebp
je 0x463ed9
lea ecx, [edi - 1]
lea edx, [eax + 4]
mov dword [eax], edi
cmp ecx, ebp
mov eax, edx
jl 0x463d3c
inc ecx
mov dword [eax + 4], ebp
mov dword [eax + 8], ebp
mov dword [eax], 6
mov dword [eax + 4], ebp
add eax, 0x10
dec ecx
jne 0x463d27
cmp edx, ebp
mov dword [esp + 0x7c], edx
je 0x463e98
mov al, byte [esp + 0x13]
mov dword [esp + 0x70], ebx
test al, al
mov dword [esp + 0x74], esi
mov dword [esp + 0x78], edi
jne 0x463d6e
mov eax, dword [esp + 0x104]
mov dword [esp + 0x80], ebp
cmp eax, ebp
je 0x463d79
mov dword [esp + 0x80], 1
lea ecx, [esp + 0x54]
push ecx
lea ecx, [esp + 0x9c]
call fcn.00454fb0
mov ecx, dword [esp + 0xf4]
cmp ecx, ebp
je 0x463dca
call fcn.00455df0
test eax, eax
je 0x463dca
mov ecx, dword [esp + 0xf4]
mov esi, ecx
call fcn.00455df0
cmp eax, ebp
je 0x463dbd
mov ecx, eax
mov esi, eax
call fcn.00455df0
cmp eax, ebp
jne 0x463db0
push esi
lea ecx, [esp + 0x9c]
call fcn.00454d90
mov edx, dword [esp + 0x18]
cmp edi, ebp
mov eax, dword [edx + 0x78]
mov dword [esp + 0xa8], eax
je 0x463dfa
xor esi, esi
mov dword [esp + 0x100], ebp
mov ecx, dword [esp + 0x7c]
lea edx, [esi + ecx]
mov ecx, ebx
push edx
call fcn.004615d0
add esi, 0x10
dec edi
jne 0x463de5
mov edi, dword [ebx + 0xd60]
lea eax, [esp + 0x70]
inc edi
push eax
mov dword [ebx + 0xd60], edi
call dword [esp + 0x6c]
mov ecx, dword [ebx + 0xd60]
mov eax, dword [esp + 0x84]
add esp, 4
dec ecx
cmp eax, ebp
mov dword [ebx + 0xd60], ecx
lea esi, [esp + 0x98]
jne 0x463e39
lea esi, [esp + 0x88]
mov ecx, ebx
call fcn.00461400
test eax, eax
je 0x463e5d
mov ecx, dword [ebx + 0xc90]
mov edx, dword [ebx + 0xc8c]
shl ecx, 4
push esi
lea ecx, [ecx + edx - 0x10]
call fcn.00454fb0
mov ecx, dword [esp + 0x7c]
cmp ecx, ebp
je 0x463e90
mov eax, dword [ecx - 4]
lea ebp, [ecx - 4]
mov esi, eax
shl esi, 4
add esi, ecx
dec eax
js 0x463e85
lea edi, [eax + 1]
sub esi, 0x10
mov ecx, esi
call fcn.0043d980
dec edi
jne 0x463e78
push ebp
call fcn.0041eda0
add esp, 4
xor ebp, ebp
mov dword [esp + 0x20], 1
lea ecx, [esp + 0x98]
call fcn.00454b70
mov ecx, dword [esp + 0x9c]
cmp ecx, ebp
je 0x463eb4
call fcn.00422030
lea ecx, [esp + 0x88]
call fcn.00454b70
mov ecx, dword [esp + 0x8c]
cmp ecx, ebp
je 0x46485d
call fcn.00422030
jmp 0x46485d
mov dword [esp + 0x7c], ebp
jmp 0x463e98
cmp dword [ecx + 0x68], ebp
je 0x46485d
push 0xc
call fcn.0041ed90
add esp, 4
cmp eax, ebp
je 0x463f01
mov ecx, eax
call fcn.00497480
mov edi, eax
jmp 0x463f03
xor edi, edi
mov esi, dword [esp + 0x100]
mov dword [esp + 0x68], edi
mov eax, esi
shl eax, 4
add eax, 4
push eax
call fcn.0041ed90
add esp, 4
cmp eax, ebp
je 0x463f49
lea ecx, [esi - 1]
lea edx, [eax + 4]
mov dword [eax], esi
cmp ecx, ebp
mov eax, edx
jl 0x463f4b
inc ecx
mov dword [eax + 4], ebp
mov dword [eax + 8], ebp
mov dword [eax], 6
mov dword [eax + 4], ebp
add eax, 0x10
dec ecx
jne 0x463f32
jmp 0x463f4b
xor edx, edx
cmp edi, ebp
mov dword [esp + 0x50], edx
je 0x46485d
cmp edx, ebp
je 0x46485d
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 0x18]
cmp eax, ebp
je 0x463f74
mov ecx, dword [eax + 0x34]
call fcn.0044ee50
jmp 0x463f7b
mov ecx, ebx
call fcn.004698d0
mov ebp, eax
cmp ebp, 6
mov dword [esp + 0x2c], ebp
jl 0x463fb2
mov edx, dword [esp + 0x18]
mov ecx, dword [edx + 0x80]
test ecx, ecx
je 0x463fa1
call fcn.00455db0
mov esi, eax
mov dword [esp + 0x20], esi
jmp 0x463fa5
mov esi, dword [esp + 0x20]
test esi, esi
jne 0x463ff6
mov esi, dword [esp + 0xf8]
jmp 0x463ff2
mov eax, dword [esp + 0x54]
mov esi, dword [esp + 0xf8]
cmp eax, 4
mov dword [esp + 0x20], esi
jne 0x463fd9
lea ecx, [esp + 0x54]
call fcn.00454d20
test eax, eax
je 0x463fd9
mov esi, eax
mov dword [esp + 0x20], esi
test esi, esi
jne 0x463ff6
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 0x80]
test ecx, ecx
je 0x463ff6
call fcn.00455db0
mov esi, eax
mov dword [esp + 0x20], esi
push 0x50
call fcn.0041ed90
add esp, 4
test eax, eax
je 0x464010
push ebx
mov ecx, eax
call fcn.00436b90
mov edi, eax
jmp 0x464012
xor edi, edi
mov ecx, dword [esp + 0x68]
mov dword [edi + 4], ecx
mov ecx, edi
call fcn.00436be0
cmp ebp, 6
push 0x4c
jl 0x46405f
call fcn.0041ed90
add esp, 4
test eax, eax
je 0x464047
mov esi, dword [esp + 0x18]
mov ecx, eax
mov edx, dword [esi + 0x80]
push edx
call fcn.00455c00
jmp 0x46404d
mov esi, dword [esp + 0x18]
xor eax, eax
mov edx, dword [edi + 0x1c]
push 1
push edx
mov ecx, eax
mov dword [edi + 0x2c], eax
call fcn.00455c60
jmp 0x4640b5
call fcn.0041ed90
add esp, 4
test eax, eax
je 0x464075
push ebx
mov ecx, eax
call fcn.00455be0
jmp 0x464077
xor eax, eax
push 0
push 1
mov ecx, ebx
mov dword [edi + 0x2c], eax
call fcn.004635b0
mov ecx, dword [edi + 0x2c]
push eax
call fcn.00455c60
test esi, esi
je 0x4640a3
mov ecx, dword [edi + 0x2c]
add esi, 0x110
push 0
push esi
call fcn.00455c60
mov eax, dword [edi + 0x1c]
mov ecx, dword [edi + 0x2c]
push 1
push eax
call fcn.00455c60
mov esi, dword [esp + 0x18]
push edi
lea ecx, [ebx + 0x5b0]
call fcn.00436e20
mov eax, dword [esi + 0x6c]
xor ecx, ecx
cmp eax, ecx
mov dword [edi + 0x20], eax
je 0x4640d0
inc dword [eax + 8]
mov eax, dword [esi + 0x18]
mov ebp, 0x7fffffff
test eax, eax
mov dword [esp + 0x70], ecx
mov dword [esp + 0x74], ecx
mov dword [esp + 0x8c], 0xffffffff
mov dword [esp + 0x90], ebp
je 0x46410e
mov ecx, dword [eax + 0x34]
call fcn.0044ee50
mov ecx, dword [esi + 0x68]
mov dword [esp + 0x8c], eax
mov dword [esp + 0x70], ecx
jmp 0x464142
mov ecx, dword [esi + 0x14]
test ecx, ecx
je 0x464130
mov edx, dword [esp + 0x18]
mov esi, dword [edx + 0x68]
call fcn.004698d0
mov ecx, esi
mov dword [esp + 0x8c], eax
mov dword [esp + 0x70], ecx
jmp 0x464142
mov ecx, dword [esi + 0x68]
mov dword [esp + 0x8c], 7
mov dword [esp + 0x70], ecx
mov eax, dword [esp + 0x18]
xor ebx, ebx
mov dword [esp + 0x90], ebp
mov dword [esp + 0x84], 0x20000000
mov al, byte [eax + 0x84]
mov dword [esp + 0x74], 2
mov bh, byte [ecx + 1]
mov byte [esp + 0x13], al
mov bl, byte [ecx]
mov dword [esp + 0x24], 0
test al, al
mov dword [esp + 0x28], ebx
je 0x464205
mov cl, byte [ecx + 2]
mov dword [esp + 0x74], 3
mov byte [edi + 0x48], cl
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x70]
lea eax, [ecx + edx]
add ecx, 2
mov dword [esp + 0x74], ecx
xor ecx, ecx
mov ch, byte [eax + 1]
mov cl, byte [eax]
mov al, byte [edi + 0x48]
test al, al
mov dword [esp + 0x24], ecx
je 0x464205
and eax, 0xff
mov esi, eax
mov edx, esi
shl edx, 4
add edx, 4
push edx
call fcn.0041ed90
xor ebp, ebp
add esp, 4
cmp eax, ebp
je 0x4641fe
mov dword [eax], esi
dec esi
lea edx, [eax + 4]
cmp esi, ebp
mov eax, edx
jl 0x464200
lea ecx, [esi + 1]
mov dword [eax + 4], ebp
mov dword [eax + 8], ebp
mov dword [eax], 6
mov dword [eax + 4], ebp
add eax, 0x10
dec ecx
jne 0x4641e4
mov dword [edi + 0x4c], edx
jmp 0x464207
xor edx, edx
mov dword [edi + 0x4c], edx
jmp 0x464207
xor ebp, ebp
mov al, byte [esp + 0x24]
mov dword [esp + 0xd8], ebp
test al, 2
mov dword [esp + 0xd0], 6
mov dword [esp + 0xd4], ebp
jne 0x464299
lea eax, [esp + 0x54]
lea ecx, [esp + 0xd0]
push eax
call fcn.00454fb0
mov esi, dword [esp + 0xf4]
cmp esi, ebp
je 0x464274
mov ecx, esi
call fcn.00455df0
test eax, eax
je 0x464274
mov ecx, esi
call fcn.00455df0
cmp eax, ebp
je 0x464267
mov ecx, eax
mov esi, eax
call fcn.00455df0
cmp eax, ebp
jne 0x46425a
push esi
lea ecx, [esp + 0xd4]
call fcn.00454d90
test byte [esp + 0x24], 1
jne 0x464299
mov edx, dword [esp + 0x1c]
push 3
lea ecx, [esp + 0xd4]
push ebp
add edx, 0xcf0
push ecx
mov ecx, dword [edi + 0x1c]
push edx
call fcn.00453b10
mov ecx, dword [esp + 0x48]
mov dword [edi + 0x24], ecx
call fcn.00452e40
mov al, byte [esp + 0x24]
test al, 8
jne 0x4642ca
test al, 4
jne 0x4642b9
mov ecx, dword [edi + 0x1c]
call fcn.00454830
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x100]
mov dword [edi + 0x3c], eax
mov dword [edi + 0x40], ecx
mov eax, dword [esp + 0x100]
xor ebp, ebp
test eax, eax
jle 0x4643a8
mov esi, dword [esp + 0x50]
mov ecx, dword [esp + 0x1c]
push esi
call fcn.004615d0
cmp ebp, ebx
jge 0x464391
mov al, byte [esp + 0x13]
test al, al
je 0x46433d
mov eax, dword [esp + 0x74]
mov edx, dword [esp + 0x70]
mov bl, byte [eax + edx]
inc eax
test bl, bl
mov dword [esp + 0x74], eax
mov byte [esp + 0x30], bl
je 0x46433d
lea ecx, [esp + 0x70]
call fcn.00448eb0
mov eax, dword [edi + 0x4c]
test eax, eax
je 0x464391
cmp bl, byte [edi + 0x48]
jae 0x464391
mov ecx, dword [esp + 0x30]
push esi
and ecx, 0xff
shl ecx, 4
add ecx, eax
call fcn.00454fb0
jmp 0x464391
lea ecx, [esp + 0x70]
call fcn.00448df0
mov ecx, dword [esp + 0x1c]
push ecx
push eax
call fcn.004562c0
mov ecx, dword [edi + 0x1c]
add esp, 8
lea edx, [esp + 0x14]
mov dword [esp + 0x14], eax
push 0
push 0
push esi
push edx
call fcn.00453b10
mov ecx, dword [esp + 0x14]
test ecx, ecx
je 0x464391
mov eax, dword [ecx]
mov edx, eax
and edx, 0xfffffffe
not eax
dec edx
and eax, 1
xor edx, eax
mov dword [ecx], edx
mov eax, dword [ecx]
test eax, 0xfffffffe
jg 0x464391
call fcn.00456510
mov eax, dword [esp + 0x100]
mov ebx, dword [esp + 0x28]
inc ebp
add esi, 0x10
cmp ebp, eax
jl 0x4642df
xor eax, eax
cmp ebp, ebx
mov dword [esp + 0x100], eax
mov dword [esp + 0xc8], eax
mov dword [esp + 0xc0], 6
mov dword [esp + 0xc4], eax
jge 0x46441c
sub ebx, ebp
mov esi, ebx
mov al, byte [esp + 0x13]
test al, al
je 0x4643ee
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x70]
mov cl, byte [eax + ecx]
inc eax
test cl, cl
mov dword [esp + 0x74], eax
jne 0x46440e
lea ecx, [esp + 0x70]
call fcn.00448d90
mov ecx, dword [edi + 0x1c]
push 0
lea edx, [esp + 0xc4]
push 0
push edx
push eax
call fcn.00453aa0
jmp 0x464417
lea ecx, [esp + 0x70]
call fcn.00448e90
dec esi
jne 0x4643d2
xor eax, eax
mov dword [esp + 0xb8], eax
mov dword [esp + 0xb4], eax
mov al, byte [esp + 0x24]
mov dword [esp + 0xb0], 6
test al, 0x20
jne 0x464562
cmp dword [esp + 0x2c], 6
jl 0x464562
mov eax, dword [esp + 0xf4]
test eax, eax
je 0x464562
mov eax, dword [esp + 0x1c]
lea ecx, [esp + 0xb0]
push eax
call fcn.00454ea0
mov eax, dword [esp + 0x64]
test eax, eax
je 0x464527
mov eax, dword [esp + 0xf4]
xor esi, esi
xor ebx, ebx
cmp eax, dword [esp + 0x64]
je 0x464495
mov ecx, eax
inc esi
call fcn.004539f0
cmp eax, ebx
jne 0x464483
mov ecx, dword [esp + 0xf4]
push ecx
mov ecx, dword [esp + 0xbc]
call fcn.00455e20
cmp esi, ebx
jle 0x46453d
mov ebp, 6
mov edx, dword [esp + 0x1c]
lea ecx, [esp + 0x30]
push edx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x34], ebp
mov dword [esp + 0x38], ebx
call fcn.00454ea0
mov eax, dword [esp + 0xb8]
mov ecx, dword [esp + 0x38]
push eax
call fcn.00455e20
lea ecx, [esp + 0x30]
push ecx
lea ecx, [esp + 0xb4]
call fcn.00454fb0
lea ecx, [esp + 0x30]
call fcn.00454b70
mov ecx, dword [esp + 0x34]
cmp ecx, ebx
je 0x464522
mov eax, dword [ecx]
mov edx, eax
and edx, 0xfffffffe
not eax
dec edx
and eax, 1
xor edx, eax
mov dword [ecx], edx
mov eax, dword [ecx]
test eax, 0xfffffffe
jg 0x464522
call fcn.00456510
dec esi
jne 0x4644b6
jmp 0x46453d
mov eax, dword [esp + 0xf4]
mov ecx, dword [esp + 0xb8]
push eax
call fcn.00455e20
xor ebx, ebx
test byte [esp + 0x24], 0x10
jne 0x464562
mov edx, dword [esp + 0x1c]
push 3
lea ecx, [esp + 0xb4]
push ebx
add edx, 0xcf4
push ecx
mov ecx, dword [edi + 0x1c]
push edx
call fcn.00453b10
mov eax, dword [edi + 0x4c]
test eax, eax
je 0x46470a
mov cl, byte [esp + 0x24]
mov byte [esp + 0x14], 1
test cl, 1
je 0x464590
lea ecx, [eax + 0x10]
lea eax, [esp + 0xd0]
push eax
mov byte [esp + 0x18], 2
call fcn.00454fb0
test byte [esp + 0x24], 4
je 0x4645c3
mov eax, dword [esp + 0x14]
mov ebp, dword [edi + 0x4c]
mov bl, byte [esp + 0x14]
and eax, 0xff
shl eax, 4
add eax, ebp
mov ebp, dword [esp + 0x1c]
push eax
inc bl
push edi
push ebp
mov byte [esp + 0x20], bl
call fcn.00463710
add esp, 0xc
jmp 0x4645c7
mov ebp, dword [esp + 0x1c]
test byte [esp + 0x24], 0x10
je 0x4645f7
mov ecx, dword [esp + 0x14]
mov esi, dword [edi + 0x4c]
mov dl, byte [esp + 0x14]
and ecx, 0xff
shl ecx, 4
add ecx, esi
inc dl
mov byte [esp + 0x14], dl
lea edx, [esp + 0xb0]
push edx
call fcn.00454fb0
mov al, byte [esp + 0x24]
mov ebx, dword [esp + 0x20]
test al, 0x40
je 0x464695
test ebx, ebx
je 0x464610
mov esi, dword [ebx + 0x74]
jmp 0x464613
mov esi, dword [ebp + 0x7c]
test esi, esi
je 0x464695
mov eax, dword [esi + 4]
test eax, eax
je 0x464666
lea ebx, [ebp + 0x5e0]
cmp eax, ebx
je 0x464666
mov eax, dword [esi + 0x20]
mov ecx, dword [eax + 0x34]
call fcn.0044ee50
cmp eax, 6
jg 0x46464b
mov eax, dword [esi + 4]
mov eax, dword [eax + 0x20]
mov ecx, dword [eax + 0x34]
call fcn.0044ee50
cmp eax, 6
jle 0x46465c
mov al, byte [esi + 0x6a]
test al, al
je 0x46465c
mov eax, dword [ebp + 0x11a8]
test eax, eax
je 0x464666
mov esi, dword [esi + 4]
mov eax, dword [esi + 4]
test eax, eax
jne 0x464624
mov ecx, dword [esp + 0x14]
mov eax, dword [edi + 0x4c]
mov edx, dword [esi + 0x20]
mov bl, byte [esp + 0x14]
and ecx, 0xff
add edx, 0x110
shl ecx, 4
add ecx, eax
inc bl
push edx
mov byte [esp + 0x18], bl
call fcn.00454d90
mov ebx, dword [esp + 0x20]
test byte [esp + 0x24], 0x80
je 0x4646dc
test ebx, ebx
je 0x4646dc
mov eax, dword [ebx + 0x74]
test eax, eax
je 0x4646dc
mov eax, dword [eax + 4]
test eax, eax
je 0x4646dc
mov eax, dword [eax + 0x20]
test eax, eax
je 0x4646dc
mov ecx, dword [esp + 0x14]
mov esi, dword [edi + 0x4c]
mov dl, byte [esp + 0x14]
and ecx, 0xff
shl ecx, 4
add ecx, esi
add eax, 0x110
inc dl
push eax
mov byte [esp + 0x18], dl
call fcn.00454d90
mov eax, dword [esp + 0x24]
test ah, 1
je 0x464712
mov esi, dword [esp + 0x14]
mov eax, dword [edi + 0x4c]
and esi, 0xff
push 1
shl esi, 4
mov ecx, ebp
add esi, eax
call fcn.004635b0
push eax
mov ecx, esi
call fcn.00454d90
jmp 0x464712
mov ebp, dword [esp + 0x1c]
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 0x74]
push 0
add ecx, 2
mov dword [esp + 0x78], ecx
mov ecx, dword [esp + 0x1c]
call fcn.00455eb0
mov ecx, dword [esp + 0x74]
push eax
mov eax, dword [esp + 0x74]
push 0xffffffffffffffff
add ecx, eax
push ebx
push ecx
mov ecx, dword [esp + 0x78]
push ebp
call fcn.00436690
mov eax, dword [esp + 0x104]
xor edx, edx
test eax, eax
setne dl
mov dword [esp + 0x2c], eax
mov eax, dword [edi + 0x3c]
inc edx
mov ecx, 1
test eax, eax
mov dword [edi + 0x18], edx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x20], ecx
jne 0x4647bb
mov ecx, dword [esp + 0x50]
mov eax, dword [ecx - 4]
lea edi, [ecx - 4]
mov esi, eax
shl esi, 4
add esi, ecx
dec eax
js 0x4647b2
lea ebx, [eax + 1]
sub esi, 0x10
mov ecx, esi
call fcn.00454b70
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x4647af
mov edx, dword [ecx]
mov eax, edx
and al, 0xfe
not edx
dec eax
and edx, 1
xor eax, edx
test eax, 0xfffffffe
mov dword [ecx], eax
jg 0x4647af
call fcn.00456510
dec ebx
jne 0x464782
push edi
call fcn.0041eda0
add esp, 4
lea ecx, [esp + 0xb0]
call fcn.00454b70
mov ecx, dword [esp + 0xb4]
test ecx, ecx
je 0x4647f1
mov eax, dword [ecx]
mov edx, eax
and edx, 0xfffffffe
not eax
dec edx
and eax, 1
xor edx, eax
mov dword [ecx], edx
mov eax, dword [ecx]
test eax, 0xfffffffe
jg 0x4647f1
call fcn.00456510
lea ecx, [esp + 0xc0]
call fcn.00454b70
mov ecx, dword [esp + 0xc4]
test ecx, ecx
je 0x464827
mov eax, dword [ecx]
mov edx, eax
and edx, 0xfffffffe
not eax
dec edx
and eax, 1
xor edx, eax
mov dword [ecx], edx
mov eax, dword [ecx]
test eax, 0xfffffffe
jg 0x464827
call fcn.00456510
lea ecx, [esp + 0xd0]
call fcn.00454b70
mov ecx, dword [esp + 0xd4]
test ecx, ecx
je 0x46485d
mov eax, dword [ecx]
mov edx, eax
and edx, 0xfffffffe
not eax
dec edx
and eax, 1
xor edx, eax
mov dword [ecx], edx
mov eax, dword [ecx]
test eax, 0xfffffffe
jg 0x46485d
call fcn.00456510
lea ecx, [esp + 0xe0]
call fcn.0043ea40
mov ebx, dword [esp + 0x1c]
xor ebp, ebp
mov esi, dword [esp + 0x100]
cmp esi, ebp
je 0x464884
mov ecx, ebx
call fcn.00461550
dec esi
jne 0x46487a
cmp dword [esp + 0x2c], ebp
je 0x4648b2
mov ecx, ebx
call fcn.00461400
test eax, eax
je 0x4648b2
mov ecx, dword [ebx + 0xc90]
mov edx, dword [ebx + 0xc8c]
shl ecx, 4
lea eax, [esp + 0x54]
push eax
lea ecx, [ecx + edx - 0x10]
call fcn.00454fb0
cmp dword [esp + 0x20], ebp
jne 0x464932
mov ecx, ebx
mov dword [esp + 0xc8], ebp
mov dword [esp + 0xc0], 6
mov dword [esp + 0xc4], ebp
call fcn.00461400
test eax, eax
je 0x4648fc
mov ecx, dword [ebx + 0xc90]
mov edx, dword [ebx + 0xc8c]
shl ecx, 4
lea eax, [esp + 0xc0]
push eax
lea ecx, [ecx + edx - 0x10]
call fcn.00454fb0
lea ecx, [esp + 0xc0]
call fcn.00454b70
mov ecx, dword [esp + 0xc4]
cmp ecx, ebp
je 0x464932
mov eax, dword [ecx]
mov edx, eax
and edx, 0xfffffffe
not eax
dec edx
and eax, 1
xor edx, eax
mov dword [ecx], edx
mov eax, dword [ecx]
test eax, 0xfffffffe
jg 0x464932
call fcn.00456510
lea ecx, [esp + 0x54]
call fcn.00454b70
mov ecx, dword [esp + 0x58]
cmp ecx, ebp
je 0x464962
mov eax, dword [ecx]
mov edx, eax
and edx, 0xfffffffe
not eax
dec edx
and eax, 1
xor edx, eax
mov dword [ecx], edx
mov eax, dword [ecx]
test eax, 0xfffffffe
jg 0x464962
call fcn.00456510
lea ecx, [esp + 0x40]
call fcn.00454b70
mov ecx, dword [esp + 0x44]
pop edi
pop esi
cmp ecx, ebp
pop ebp
pop ebx
je 0x464996
mov eax, dword [ecx]
mov edx, eax
and edx, 0xfffffffe
not eax
dec edx
and eax, 1
xor edx, eax
mov dword [ecx], edx
mov eax, dword [ecx]
test eax, 0xfffffffe
jg 0x464996
call fcn.00456510
mov eax, dword [esp + 0x18]
add esp, 0xe0
ret 0x20