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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x4c1b8b
mov eax, dword fs:[0]
push eax
push ecx
mov eax, 0x2ee44
call fcn.004b0000
mov eax, dword [0x4d98f0]
xor eax, esp
mov dword [esp + 0x2ee40], eax
push ebx
push esi
push edi
mov eax, dword [0x4d98f0]
xor eax, esp
push eax
lea eax, [esp + 0x2ee58]
mov dword fs:[0], eax
mov esi, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
xor edx, edx
mov ebx, ecx
mov eax, dword [ebx + 0x28]
mov dword [esp + 0x34], esi
mov dword [esp + 0x18], edi
mov dword [esp + 0x38], edx
mov dword [esp + 0x3c], edx
mov dword [esp + 0x1c], edx
cmp byte [eax + 0x3f4c], dl
je 0x403caa
mov dword [eax + 0x3958], edx
mov dword [eax + 0x395c], edx
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x410], dl
je 0x403d56
push 0x4c67cc
push esi
call fcn.00456240
test al, al
jne 0x403d54
push 0x4c67c8
push esi
call fcn.00456240
test al, al
jne 0x403d54
push 0x4c67c4
push esi
call fcn.00456240
test al, al
jne 0x403d48
mov eax, esi
dec eax
lea ecx, [ecx]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x403cf0
mov ecx, dword [str..ext]
mov dword [eax], ecx
mov dl, byte [0x4c67c0]
mov byte [eax + 4], dl
test edi, edi
je 0x403d48
cmp word [edi], 0
je 0x403d48
mov eax, edi
add eax, 0xfffffffe
jmp 0x403d20
mov cx, word [eax + 2]
add eax, 2
test cx, cx
jne 0x403d20
mov ecx, dword [0x4c67b0]
mov dword [eax], ecx
mov edx, dword [0x4c67b4]
mov dword [eax + 4], edx
mov cx, word [0x4c67b8]
mov word [eax + 8], cx
push esi
call fcn.00457ee0
push edi
call fcn.00457f00
xor edx, edx
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x398b], 0
je 0x403d6a
push esi
call fcn.00436bf0
xor edx, edx
mov eax, dword [ebx + 0x28]
mov byte [esp + 0x2e24c], 0
mov ecx, dword [eax + 0x3930]
cmp ecx, edx
mov byte [esp + 0x2e64c], 0
jge 0x403d99
mov edi, dword [eax + 0x3958]
or edi, dword [eax + 0x395c]
mov dword [esp + 0x40], ecx
jne 0x403d9d
mov dword [esp + 0x40], edx
mov ecx, dword [eax + 0x3958]
or ecx, dword [eax + 0x395c]
je 0x403db4
mov byte [ebx + 0x23f8], 1
jmp 0x403dbb
and dword [eax + 0x393c], 0xffffffe7
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x281c], 0
lea ecx, [eax + 0x281c]
jne 0x403de3
add eax, 0x2c1c
cmp word [eax], dx
je 0x403de3
push 0x400
push ecx
push eax
call fcn.00455da0
mov eax, dword [ebx + 0x28]
movzx edx, byte [eax + 0x397d]
mov ecx, dword [eax + 0x3950]
push 1
push edx
mov edx, dword [eax + 0x6bc4]
push ecx
push edx
lea ecx, [esp + 0x16d4c]
call fcn.00469000
mov dword [esp + 0x2ee60], 0
lea edx, [esp + 0x18d64]
mov eax, esi
sub edx, esi
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x403e20
mov eax, dword [ebx + 0x28]
lea ecx, [esp + 0x2e90]
mov dword [esp + 0x19164], eax
call fcn.004128b0
lea ecx, [esp + 0x2eb4]
call fcn.004128b0
lea ecx, [esp + 0x2ed8]
call fcn.004128b0
mov eax, dword [ebx + 0x28]
push eax
lea ecx, [esp + 0xa8]
call fcn.00406b00
mov byte [esp + 0x2ee60], 1
mov eax, dword [ebx + 0x28]
xor edi, edi
cmp byte [eax + 0x3f4c], 0
lea esi, [eax + 0x3f4c]
mov dword [esp + 0x24], edi
mov dword [esp + 0x28], edi
je 0x403eff
push 0x48
lea ecx, [esp + 0x50]
push edi
push ecx
call fcn.004b0470
add esp, 0xc
lea ecx, [esp + 0x164]
mov dword [esp + 0x4c], esi
mov dword [esp + 0x78], 2
call fcn.004128b0
lea ecx, [esp + 0x164]
call fcn.00473090
lea ecx, [esp + 0x164]
call fcn.00472bf0
lea ecx, [esp + 0x164]
mov dword [esp + 0x60], eax
call fcn.00472ea0
mov dword [esp + 0x68], edx
lea edx, [esp + 0x4c]
push edx
lea ecx, [esp + 0xa8]
mov dword [esp + 0x68], eax
call fcn.00406330
mov edi, 1
jmp 0x4040dc
lea eax, [esp + 0x227c]
push eax
lea ecx, [esp + 0x16d40]
call fcn.00469b50
test eax, eax
jne 0x4040dc
mov esi, dword [esp + 0x24]
nop
mov ecx, dword [esp + 0x158]
mov eax, dword [esp + 0x18]
push edi
push ecx
mov ecx, dword [esp + 0x3c]
lea edx, [esp + 0x2284]
push edx
push eax
push ecx
mov ecx, ebx
call fcn.004023a0
test al, al
je 0x4040bc
push 0x48
lea edx, [esp + 0x50]
push 0
push edx
call fcn.004b0470
add esp, 0xc
lea ecx, [esp + 0x267c]
lea eax, [esp + 0x227c]
push ecx
mov dword [esp + 0x50], eax
call fcn.0046fbb0
mov ecx, dword [esp + 0x2e7c]
movzx edx, al
neg edx
sbb edx, edx
not edx
lea eax, [esp + 0x267c]
and edx, eax
mov eax, dword [esp + 0x2e84]
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x2e88]
mov dword [esp + 0x50], edx
mov edx, dword [esp + 0x2e80]
mov dword [esp + 0x60], ecx
lea ecx, [esp + 0x2e90]
mov dword [esp + 0x58], edx
mov dword [esp + 0x5c], eax
call fcn.00472ea0
lea ecx, [esp + 0x2ed8]
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], edx
call fcn.00472ea0
lea ecx, [esp + 0x227c]
mov dword [esp + 0x6c], eax
mov ax, word [esp + 0x18d60]
mov dword [esp + 0x70], edx
mov dx, word [esp + 0x18d5c]
push ecx
mov ecx, dword [ebx + 0x28]
mov word [esp + 0x78], dx
mov word [esp + 0x7a], ax
mov dword [esp + 0x7c], 2
call fcn.0041d280
test al, al
je 0x40401b
or dword [esp + 0x8c], 1
mov eax, dword [ebx + 0x28]
mov edx, dword [eax + 0x6bc8]
cmp dword [edx + 0x20], 0
jbe 0x404065
lea ecx, [esp + 0x1b4]
push ecx
lea edx, [esp + 0x2ea50]
push edx
lea ecx, [esp + 0x54]
push ecx
push eax
call fcn.00401590
mov edx, dword [esp + 0x2e8c]
mov ecx, dword [ebx + 0x28]
push 0
push 0
push edx
lea eax, [esp + 0x2ea58]
push eax
call fcn.0041d940
test al, al
jne 0x4040bc
lea ecx, [esp + 0x4c]
push ecx
lea ecx, [esp + 0xa8]
call fcn.00406330
cmp byte [esp + 0x2e8c], 0
jne 0x4040bc
mov edx, dword [ebx + 0x28]
mov ecx, dword [esp + 0x2e80]
inc edi
cmp dword [edx + 0x393c], 0
je 0x4040a3
mov eax, dword [esp + 0x2e7c]
add esi, eax
adc dword [esp + 0x28], ecx
jmp 0x4040bc
cmp dword [esp + 0x28], ecx
jg 0x4040bc
mov eax, dword [esp + 0x2e7c]
jl 0x4040b6
cmp esi, eax
ja 0x4040bc
mov esi, eax
mov dword [esp + 0x28], ecx
lea edx, [esp + 0x227c]
push edx
lea ecx, [esp + 0x16d40]
call fcn.00469b50
test eax, eax
je 0x403f20
mov dword [esp + 0x24], esi
mov eax, dword [esp + 0x158]
mov esi, dword [esp + 0x34]
push edi
push eax
push 0
push 0
push 0
mov ecx, ebx
call fcn.004023a0
cmp dword [esp + 0x17554], 0
je 0x404139
mov ecx, dword [ebx + 0x28]
cmp byte [ecx + 0x3a0f], 0
je 0x40412d
push 0x44c
call fcn.00466860
push eax
call fcn.004997e0
add esp, 4
push 6
mov ecx, 0x5072f4
call fcn.0042d1d0
jmp 0x404139
push 6
mov ecx, 0x5072f4
call fcn.0042c9e0
lea ecx, [esp + 0xa4]
call fcn.00406b80
lea ecx, [esp + 0x190]
call fcn.004128b0
lea ecx, [esp + 0x190]
call fcn.00473090
mov edx, dword [ebx + 0x28]
push edx
lea ecx, [esp + 0xd230]
call fcn.0040e300
mov byte [esp + 0x2ee60], 2
mov eax, dword [ebx + 0x28]
push eax
lea ecx, [esp + 0x3720]
call fcn.0040e300
mov byte [esp + 0x2ee60], 3
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x351c], 0
je 0x4041aa
cmp word [eax + 0x341c], 0
je 0x4041aa
mov ecx, 1
jmp 0x4041ac
xor ecx, ecx
mov byte [esp + 0xc604], cl
mov ecx, dword [eax + 0x3f48]
mov edx, dword [eax + 0x3f44]
push ecx
mov ecx, dword [eax + 0x3f40]
push edx
mov edx, dword [eax + 0x3f3c]
push ecx
push edx
lea ecx, [esp + 0x372c]
call fcn.0040b970
mov eax, dword [ebx + 0x28]
movzx ecx, byte [eax + 0x3989]
mov edi, dword [esp + 0x18]
neg ecx
sbb ecx, ecx
and ecx, 3
inc ecx
push ecx
push edi
push esi
lea ecx, [esp + 0xd238]
call fcn.00434530
test al, al
je 0x40444a
mov eax, dword [ebx + 0x28]
mov edx, dword [eax + 0x3958]
or edx, dword [eax + 0x395c]
jne 0x40422a
cmp byte [esp + 0x1610d], dl
jne 0x404280
cmp dword [eax + 0x393c], edx
je 0x404280
lea ecx, [esp + 0xd22c]
call fcn.00434440
cmp eax, 0x14
jne 0x40425b
test edx, edx
jne 0x40425b
lea ecx, [esp + 0xd22c]
call fcn.00434220
mov dword [esp + 0xde4c], 1
jmp 0x404458
mov eax, dword [ebx + 0x28]
mov ecx, dword [eax + 0x3958]
or ecx, dword [eax + 0x395c]
je 0x404280
xor ecx, ecx
mov dword [eax + 0x3958], ecx
mov dword [eax + 0x395c], ecx
mov byte [ebx + 0x23f8], cl
push 0
lea ecx, [esp + 0xd230]
call fcn.0040d2c0
lea ecx, [esp + 0xd22c]
call fcn.0040b680
test al, al
jne 0x4042aa
push edi
push esi
mov ecx, 0x5072f4
call fcn.0042d2c0
lea ecx, [esp + 0xd22c]
call fcn.004a1ee0
push 0
lea ecx, [esp + 0xd230]
call fcn.0040b500
test al, al
je 0x4042d4
push 4
mov ecx, 0x5072f4
call fcn.0042d1d0
lea ecx, [esp + 0xd22c]
call fcn.0040b590
test al, al
je 0x4042f0
push 3
mov ecx, 0x5072f4
call fcn.0042d1d0
mov al, byte [esp + 0x1610d]
mov byte [esp + 0xc5fd], al
push 1
push edi
push esi
push 0
call fcn.0040a020
mov eax, dword [ebx + 0x28]
mov ecx, dword [eax + 0x3958]
mov eax, dword [eax + 0x395c]
mov edx, ecx
or edx, eax
je 0x40432d
push eax
push ecx
lea eax, [esp + 0x3724]
push eax
call fcn.0047f460
cmp dword [esp + 0xd230], 0xffffffff
mov byte [esp + 0x15], 0
setne al
mov byte [esp + 0x14], al
test al, al
je 0x404527
cmp dword [esp + 0x158], 0
jne 0x404363
mov ecx, dword [ebx + 0x28]
cmp byte [ecx + 0x3a0f], 0
je 0x40453f
lea ecx, [esp + 0x371c]
call fcn.0040b5d0
push 0
push 1
lea edx, [esp + 0xd234]
push edx
lea ecx, [esp + 0x3728]
call fcn.0040f3f0
lea eax, [esp + 0x13]
push eax
lea ecx, [esp + 0x19]
push ecx
lea edx, [esp + 0xac]
push edx
lea eax, [esp + 0xd238]
push eax
mov ecx, ebx
call fcn.00402780
cmp byte [esp + 0x13], 0
je 0x40453f
xor esi, esi
cmp dword [esp + 0x158], esi
jbe 0x4043e1
lea edi, [esi + 4]
push esi
lea ecx, [esp + 0xa8]
call fcn.004063e0
cmp dword [eax + 0x2c], edi
jne 0x40453f
inc esi
cmp esi, dword [esp + 0x158]
jb 0x4043c1
mov ecx, dword [ebx + 0x28]
cmp dword [ecx + 0x3974], 0
jne 0x40453f
push 0xa
mov ecx, 0x5072f4
call fcn.0042c9e0
lea ecx, [esp + 0x371c]
call fcn.00434220
mov byte [esp + 0x2ee60], 2
lea ecx, [esp + 0x371c]
call fcn.0040bd50
mov byte [esp + 0x2ee60], 1
lea ecx, [esp + 0xd22c]
call fcn.0040bd50
mov byte [esp + 0x2ee60], 0
lea ecx, [esp + 0xa4]
call fcn.00402710
jmp 0x405dba
cmp dword [esp + 0xde4c], 1
jne 0x404509
push 1
push edi
push esi
lea ecx, [esp + 0x3728]
mov byte [esp + 0xc634], 1
call fcn.00434b00
mov edx, dword [ebx + 0x28]
cmp byte [edx + 0x410], 0
je 0x4044e5
lea ecx, [esp + 0x1b4]
call fcn.004340f0
mov byte [esp + 0x2ee60], 4
mov eax, dword [ebx + 0x28]
lea ecx, [eax + 0x810]
push ecx
add eax, 0x410
push eax
lea ecx, [esp + 0x1bc]
call fcn.00434ac0
push 0x7fffffff
push 0x7fffffff
lea edx, [esp + 0x3724]
push edx
lea ecx, [esp + 0x1c0]
call fcn.00434f90
mov dword [esp + 0xc608], eax
mov byte [esp + 0x2ee60], 3
lea ecx, [esp + 0x1b4]
call fcn.00434500
mov eax, dword [ebx + 0x28]
cmp dword [eax + 0x393c], 0
je 0x404502
cmp dword [eax + 0x392c], 0
je 0x404502
mov byte [esp + 0xc5fd], 1
push 0
jmp 0x404300
push 0
push esi
mov ecx, 0x5072f4
call fcn.0042d2a0
push 9
mov ecx, 0x5072f4
call fcn.0042d1d0
jmp 0x404309
push 0
push 0
lea edx, [esp + 0xd234]
push edx
lea ecx, [esp + 0x3728]
call fcn.0040f3f0
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x3f4c], 0
jne 0x4045c1
cmp byte [esp + 0x14], 0
je 0x40455c
cmp byte [esp + 0x1610d], 0
jne 0x4045c1
mov ecx, dword [eax + 0x393c]
neg ecx
sbb ecx, ecx
and ecx, 0xe0000
add ecx, 0x20000
cmp dword [eax + 0xc], ecx
jbe 0x4045c1
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x24]
push 0
push 2
push edx
push eax
call fcn.004b0a90
mov edi, eax
lea esp, [esp]
mov ecx, dword [ebx + 0x28]
mov eax, dword [ecx + 0xc]
xor esi, esi
cmp esi, edx
jl 0x4045c1
jg 0x4045a2
cmp eax, edi
jbe 0x4045c1
shr dword [ecx + 0xc], 1
mov ecx, dword [ebx + 0x28]
mov eax, dword [ecx + 0x393c]
neg eax
sbb eax, eax
and eax, 0xe0000
add eax, 0x20000
cmp dword [ecx + 0xc], eax
ja 0x404590
xor edi, edi
xor esi, esi
cmp dword [esp + 0x158], edi
jbe 0x40469c
mov ecx, dword [ebx + 0x28]
cmp byte [ecx + 0x3948], 0
je 0x4045f1
push esi
lea ecx, [esp + 0xa8]
call fcn.004063e0
cmp dword [eax + 0x2c], 2
je 0x404604
push esi
lea ecx, [esp + 0xa8]
call fcn.004063e0
cmp dword [eax + 0x2c], 1
jne 0x404614
push esi
lea ecx, [esp + 0xa8]
call fcn.004063e0
mov dword [eax + 0x2c], edi
push esi
lea ecx, [esp + 0xa8]
call fcn.004063e0
cmp dword [eax + 0x2c], 2
je 0x40463a
push esi
lea ecx, [esp + 0xa8]
call fcn.004063e0
cmp dword [eax + 0x2c], 3
jne 0x40468e
push esi
lea ecx, [esp + 0xa8]
call fcn.004063e0
mov edx, dword [eax + 8]
add dword [esp + 0xc61c], edx
mov eax, dword [eax + 0xc]
push esi
adc dword [esp + 0xc624], eax
lea ecx, [esp + 0xa8]
call fcn.004063e0
mov eax, dword [eax]
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x404670
mov ecx, dword [esp + 0xc624]
sub eax, edx
lea edx, [eax + ecx]
lea eax, [edx + eax*2 + 0x20]
mov dword [esp + 0xc624], eax
inc esi
cmp esi, dword [esp + 0x158]
jb 0x4045d2
cmp byte [esp + 0xc5fd], 0
je 0x4046b6
mov ecx, dword [ebx + 0x28]
cmp byte [ecx + 0x3972], 0
jne 0x4046b6
mov al, 1
jmp 0x4046b8
xor al, al
push edi
push eax
lea ecx, [esp + 0xac]
call fcn.00406bd0
mov esi, dword [ebx + 0x1ed8]
cmp esi, edi
je 0x4046e0
mov ecx, esi
call fcn.0044edd0
push esi
call fcn.004afad9
add esp, 4
push 0x1b8a0
call fcn.004b0a20
add esp, 4
mov dword [esp + 0x24], eax
mov byte [esp + 0x2ee60], 5
cmp eax, edi
je 0x404714
mov ecx, dword [ebx + 0x28]
lea edx, [ebx + 0x1ef0]
push edx
mov edx, dword [ecx + 0xc]
push edx
mov ecx, eax
call fcn.004509b0
jmp 0x404716
xor eax, eax
mov byte [esp + 0x2ee60], 3
mov ecx, dword [ebx + 0x28]
mov dword [ebx + 0x1ed8], eax
mov dword [ecx + 0x5360], eax
mov edx, dword [ebx + 0x28]
mov eax, dword [edx + 0x434c]
mov ecx, dword [ebx + 0x1ed8]
push eax
call fcn.0044ef40
mov ecx, dword [ebx + 0x1ed8]
call fcn.004521d0
mov eax, dword [ebx + 0x1ed8]
mov dword [eax + 0x1b87c], ebx
lea eax, [ebx + 0x1ef0]
push eax
lea ecx, [esp + 0x19170]
call fcn.0047b7a0
mov byte [esp + 0x2ee60], 6
cmp byte [esp + 0x1610d], 0
lea ecx, [esp + 0xd22c]
lea edx, [esp + 0x371c]
mov dword [ebx + 0x20], edi
mov dword [ebx + 0x24], ebx
mov dword [ebx + 4], edi
mov dword [ebx + 8], edi
mov dword [ebx + 0x18], ecx
mov dword [ebx + 0x1c], edx
mov byte [esp + 0x13], 0
mov byte [esp + 0x16], 0
je 0x40480a
mov eax, dword [ebx + 0x28]
cmp word [eax + 0x341c], di
jne 0x4047bb
cmp byte [esp + 0x15], 0
je 0x4047d7
mov ecx, dword [ebx + 0x1ee0]
add dword [esp + 0xc61c], ecx
mov edx, dword [ebx + 0x1ee4]
adc dword [esp + 0xc620], edx
jmp 0x4047dc
mov byte [esp + 0x13], 1
lea ecx, [esp + 0x1916c]
call fcn.0047cd80
movzx eax, word [esp + 0x13a1a]
mov ecx, dword [esp + 0x16118]
push edi
lea edx, [eax + ecx + 7]
push edi
push edx
lea ecx, [esp + 0xd238]
call fcn.00434b50
push 8
lea eax, [esp + 0x2e248]
push eax
call fcn.004225a0
mov dword [esp + 0x44], edi
mov dword [esp + 0x48], edi
mov dword [esp + 0x24], edi
cmp dword [esp + 0x158], edi
jbe 0x405579
mov ecx, dword [esp + 0x24]
push ecx
lea ecx, [esp + 0xa8]
call fcn.004063e0
mov esi, eax
mov ecx, 0x12
lea edi, [esp + 0x4c]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x78]
mov edx, dword [esp + 0x4c]
mov eax, dword [esp + 0x50]
mov dword [esp + 0x2c], edx
mov dword [esp + 0x20], eax
test esi, esi
je 0x405563
mov edi, dword [esp + 0x5c]
cmp esi, 6
je 0x405062
cmp esi, 5
je 0x405189
cmp esi, 4
je 0x405197
lea ecx, [esp + 0x19f0]
call fcn.004128b0
lea ecx, [esp + 0x1a14]
call fcn.004128b0
lea ecx, [esp + 0x1a38]
call fcn.004128b0
lea ecx, [esp + 0x1b4]
call fcn.004340f0
mov byte [esp + 0x2ee60], 8
push edi
call fcn.00435650
mov byte [esp + 0x15], al
test al, al
jne 0x4048eb
push edi
call fcn.00435680
test al, al
jne 0x4048eb
push edi
call fcn.00435670
test al, al
jne 0x4048eb
mov byte [esp + 0x30], al
jmp 0x404907
cmp byte [esp + 0x15], 0
mov byte [esp + 0x30], 1
je 0x404907
mov ecx, dword [ebx + 0x28]
cmp dword [ecx + 0x394c], 1
je 0x40554f
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x3f4c], 0
jne 0x404955
movzx edx, byte [eax + 0x397d]
mov ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x2c]
push edx
lea eax, [esp + 0xde0]
push eax
push ecx
push esi
call fcn.0043ad50
cmp byte [esp + 0x15], 0
mov byte [esp + 0x12], al
je 0x40496c
mov edx, dword [esp + 0x70]
mov eax, dword [esp + 0x6c]
push edx
push eax
lea ecx, [esp + 0x1a40]
call fcn.00472ee0
jmp 0x40496c
push 1
lea ecx, [esp + 0x1b8]
mov byte [esp + 0x16], 0
call fcn.004344c0
mov esi, dword [esp + 0x2c]
cmp byte [esp + 0x30], 0
jne 0x404b7b
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x3f4c], 0
jne 0x404b7b
cmp byte [esp + 0x12], 0
je 0x4049af
movzx ecx, byte [eax + 0x3989]
mov edx, dword [esp + 0x20]
neg ecx
sbb ecx, ecx
and ecx, 4
push ecx
push edx
push esi
lea ecx, [esp + 0x1c0]
call fcn.00434530
cmp dword [esp + 0x1b8], 0xffffffff
jne 0x404a61
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x34]
push eax
push esi
push ecx
push edx
mov ecx, 0x5072f4
call fcn.0042cf40
mov eax, dword [esp + 0x54]
sub dword [esp + 0xc61c], eax
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x24]
sbb dword [esp + 0xc620], ecx
push edx
lea ecx, [esp + 0xa8]
call fcn.004063e0
inc dword [esp + 0x38]
cmp dword [esp + 0x88], 0
mov dword [eax + 0x2c], 0
jl 0x40554f
jg 0x404a27
cmp dword [esp + 0x84], 0
jbe 0x40554f
cmp dword [esp + 0x90], 0
jne 0x40554f
mov esi, 4
mov dword [esp + 0x78], esi
mov dword [ebx + 0x1edc], 0
mov byte [esp + 0x2ee60], 6
lea ecx, [esp + 0x1b4]
call fcn.00434500
jmp 0x404870
cmp byte [esp + 0x12], 0
je 0x404a87
mov eax, dword [esp + 0x19e8]
lea ecx, [esp + 0x19f0]
mov dword [esp + 0x60], eax
call fcn.00472ea0
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], edx
xor edi, edi
mov ecx, dword [esp + 0x20]
push ecx
push esi
push 1
mov ecx, 0x507300
call fcn.0041d530
lea edx, [esp + 0xa34c]
push edx
mov edx, dword [ebx + 0x28]
lea eax, [esp + 0x9f50]
push eax
lea ecx, [esp + 0x54]
push ecx
push edx
call fcn.00401590
cmp byte [esp + 0x16], 0
je 0x404b2e
lea ecx, [esp + 0xd22c]
call fcn.00434340
push 0
mov esi, eax
mov eax, dword [esp + 0x1611c]
push 0
push eax
lea ecx, [esp + 0xd238]
mov edi, edx
call fcn.00434b50
push 0
lea ecx, [esp + 0x19170]
push ecx
push edi
push esi
lea edx, [esp + 0xd23c]
push edx
mov ecx, ebx
call fcn.00401b60
mov eax, dword [ebx + 0x28]
mov ecx, dword [eax + 0x392c]
dec ecx
push ecx
mov ecx, dword [ebx + 0x1ed8]
lea edx, [esp + 0x19170]
push edx
call fcn.00451320
mov esi, dword [esp + 0x2c]
mov byte [ebx + 0x1eec], 1
xor edi, edi
cmp byte [esp + 0xc5fd], 0
mov byte [esp + 0x16], 0
mov byte [esp + 0x13], 0
je 0x404c90
mov eax, dword [ebx + 0x28]
mov ecx, dword [eax + 0x393c]
mov byte [esp + 0x17], 0
test cl, 2
je 0x404b9e
mov esi, dword [eax + 0x3940]
test esi, esi
jle 0x404b9e
mov edi, dword [esp + 0x3c]
test edi, edi
jle 0x404ba2
mov eax, edi
cdq
idiv esi
test edx, edx
jne 0x404ba2
mov byte [esp + 0x17], 1
jmp 0x404ba2
push edi
call fcn.00435670
test al, al
jne 0x404a87
xor edi, edi
mov dword [esp + 0x19dc], edi
mov dword [esp + 0x19e0], edi
jmp 0x404a89
mov edi, dword [esp + 0x3c]
test cl, 4
je 0x404bf4
lea eax, [esp + 0x9f4c]
push eax
call fcn.004561e0
mov esi, eax
test esi, esi
je 0x404bec
lea ecx, [esp + 0x2e24c]
push ecx
push esi
call fcn.0046fbf0
test eax, eax
je 0x404bd1
mov byte [esp + 0x17], 1
lea edx, [esp + 0x2e24c]
mov eax, esi
sub edx, esi
lea esp, [esp]
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x404be0
jmp 0x404bf4
mov byte [esp + 0x2e24c], 0
mov edx, dword [ebx + 0x28]
mov edx, dword [edx + 0x393c]
test dl, 8
jne 0x404c51
lea esi, [esp + 0x3739]
lea eax, [esp + 0x2e64c]
mov cl, byte [eax]
cmp cl, byte [esi]
jne 0x404c30
test cl, cl
je 0x404c2c
mov cl, byte [eax + 1]
cmp cl, byte [esi + 1]
jne 0x404c30
add eax, 2
add esi, 2
test cl, cl
jne 0x404c10
xor eax, eax
jmp 0x404c35
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x404c51
test dl, 0x10
jne 0x404c58
cmp dword [esp + 0x48], 0
jg 0x404c58
jl 0x404c51
cmp dword [esp + 0x44], 0x400000
ja 0x404c58
cmp byte [esp + 0x17], 0
je 0x404c7a
test edi, edi
jle 0x404c7a
mov ecx, dword [ebx + 0x1ed8]
call fcn.0044f190
xor eax, eax
mov byte [ebx + 0x1eec], 0
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], eax
jmp 0x404c8a
mov eax, dword [esp + 0x54]
add dword [esp + 0x44], eax
mov ecx, dword [esp + 0x58]
adc dword [esp + 0x48], ecx
mov esi, dword [esp + 0x2c]
xor edi, edi
xor eax, eax
jmp 0x404ca0
mov cl, byte [esp + eax + 0x3739]
mov byte [esp + eax + 0x2e64c], cl
inc eax
test cl, cl
jne 0x404ca0
mov eax, dword [esp + 0x78]
cmp eax, 2
jne 0x404cc6
mov edx, dword [esp + 0x20]
push edi
push edi
push edi
push edx
jmp 0x404cd4
cmp eax, 3
jne 0x404cdb
mov eax, dword [esp + 0x20]
push edi
push edi
push 1
push eax
push esi
push edi
call fcn.0040a060
mov eax, dword [esp + 0x19dc]
mov ecx, dword [esp + 0x19e0]
mov dword [esp + 0x9f2c], eax
mov dword [esp + 0xabfc], eax
mov eax, dword [ebx + 0x28]
xor edx, edx
mov dword [esp + 0xac00], ecx
mov dword [esp + 0x9f20], 0x74
mov dword [esp + 0x9f34], edi
mov dword [esp + 0x9f28], edi
mov word [esp + 0x9f24], dx
cmp word [eax + 0x341c], di
je 0x404d72
cmp byte [esp + 0x15], dl
jne 0x404d72
mov ecx, dword [esp + 0x5c]
push ecx
call fcn.00435680
test al, al
jne 0x404d72
mov edx, dword [esp + 0x9f24]
mov eax, dword [esp + 0x2e244]
mov ecx, dword [esp + 0x2e248]
or edx, 0x404
mov word [esp + 0x9f24], dx
mov dword [esp + 0xab58], eax
mov dword [esp + 0xab5c], ecx
mov edx, dword [ebx + 0x28]
mov byte [esp + 0x9f3c], 0x1d
mov eax, dword [edx + 0xc]
cmp eax, 0x80000
ja 0x404db3
je 0x404dac
cmp eax, 0x10000
je 0x404dc8
cmp eax, 0x20000
je 0x404da5
cmp eax, 0x40000
jne 0x404dc8
mov eax, 0x40
jmp 0x404ddf
mov eax, 0x20
jmp 0x404ddf
mov eax, 0x60
jmp 0x404ddf
cmp eax, 0x100000
je 0x404dda
cmp eax, 0x200000
je 0x404dd3
cmp eax, 0x400000
je 0x404dcc
xor eax, eax
jmp 0x404ddf
mov eax, 0xc0
jmp 0x404ddf
mov eax, 0xa0
jmp 0x404ddf
mov eax, 0x80
mov ecx, dword [esp + 0x9f24]
or ecx, eax
cmp byte [ebx + 0x1eec], 0
mov word [esp + 0x9f24], cx
je 0x404e0b
mov eax, dword [esp + 0x9f24]
or eax, 0x10
mov word [esp + 0x9f24], ax
mov ecx, dword [esp + 0x9f24]
mov eax, dword [esp + 0x60]
or ecx, 0x8000
cmp byte [esp + 0x12], 0
mov word [esp + 0x9f24], cx
mov dword [esp + 0x9f38], eax
je 0x404e73
mov ecx, 9
lea esi, [esp + 0x19f0]
lea edi, [esp + 0xab60]
rep movsd dword es:[edi], dword [esi]
mov ecx, 9
lea esi, [esp + 0x1a38]
lea edi, [esp + 0xaba8]
rep movsd dword es:[edi], dword [esi]
mov ecx, 9
lea esi, [esp + 0x1a14]
lea edi, [esp + 0xab84]
rep movsd dword es:[edi], dword [esi]
jmp 0x404e88
mov dword [esp + 0xab60], edi
mov dword [esp + 0xaba8], edi
mov dword [esp + 0xab84], edi
mov ecx, 9
lea esi, [esp + 0x190]
lea edi, [esp + 0xabcc]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x9f40], ecx
mov eax, dword [edx + 0x392c]
add eax, 0x30
mov byte [esp + 0x9f3d], al
mov eax, dword [esp + 0x19e0]
mov ecx, eax
sar ecx, 0x1f
mov dword [esp + 0x9f44], 0
mov dword [esp + 0x9f48], eax
test eax, eax
jne 0x404eef
cmp dword [esp + 0x9f2c], 0x80000000
ja 0x404eef
cmp byte [edx + 0x3f4c], al
je 0x404f03
mov eax, dword [esp + 0x9f24]
or eax, 0x100
mov word [esp + 0x9f24], ax
cmp word [esp + 0xa34c], 0
jne 0x404f3f
cmp byte [edx + 0x281c], 0
lea eax, [edx + 0x281c]
je 0x404f27
push eax
call fcn.0046fb80
test al, al
je 0x404f3f
mov eax, dword [ebx + 0x28]
add eax, 0x2c1c
cmp word [eax], 0
je 0x404f54
push eax
call fcn.0046fbb0
test al, al
jne 0x404f54
mov ecx, dword [esp + 0x9f24]
or ecx, 0x200
mov word [esp + 0x9f24], cx
lea ecx, [esp + 0x371c]
call fcn.0040c820
inc dword [esp + 0x3c]
lea edx, [esp + 0x371c]
push edx
lea eax, [esp + 0x1b8]
lea esi, [ebx + 0x1ef0]
push eax
mov ecx, esi
mov dword [ebx + 0x2440], 0xffffffff
mov byte [esp + 0x9f38], 2
call fcn.0045d230
xor edi, edi
cmp byte [esp + 0x30], 0
mov byte [ebx + 0x1f40], 1
mov dword [ebx + 0x2410], edi
mov dword [ebx + 0x2414], edi
jne 0x4053f5
mov ecx, dword [ebx + 0x28]
cmp byte [ecx + 0x3f4c], 0
jne 0x4053f5
mov ecx, esi
call fcn.0045d1d0
test al, al
jne 0x4053f5
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x18]
push edx
mov edx, dword [esp + 0x38]
push eax
push ecx
push edx
mov ecx, 0x5072f4
call fcn.0042cf40
mov eax, dword [esp + 0x54]
sub dword [esp + 0xc61c], eax
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x24]
sbb dword [esp + 0xc620], ecx
push edx
lea ecx, [esp + 0xa8]
call fcn.004063e0
inc dword [esp + 0x38]
cmp dword [esp + 0x88], edi
mov dword [eax + 0x2c], edi
jl 0x40554f
jg 0x40503a
cmp dword [esp + 0x84], edi
jbe 0x40554f
mov esi, 4
mov dword [esp + 0x78], esi
mov dword [ebx + 0x1edc], edi
mov byte [esp + 0x2ee60], 6
lea ecx, [esp + 0x1b4]
call fcn.00434500
jmp 0x40486c
lea eax, [esp + 0xd22c]
push eax
lea ecx, [esp + 0x168]
call fcn.00468900
mov byte [esp + 0x2ee60], 7
mov ecx, dword [ebx + 0x1ed8]
call fcn.0044f190
mov ecx, dword [esp + 0x88]
mov edx, dword [esp + 0x84]
push 0
push ecx
push edx
lea ecx, [esp + 0xd238]
call fcn.00434b50
lea ecx, [esp + 0xd22c]
call fcn.0040fd20
mov al, byte [esp + 0x16114]
cmp al, byte [esp + 0xc604]
je 0x405120
mov eax, dword [esp + 0x139e8]
cmp eax, 0x74
je 0x405117
cmp eax, 0x7a
jne 0x405170
lea ecx, [esp + 0x1473c]
push ecx
push eax
lea ecx, [esp + 0x3724]
call fcn.0040c3a0
lea ecx, [esp + 0xd22c]
call fcn.00434340
mov ecx, dword [esp + 0x16104]
sub ecx, eax
mov eax, dword [esp + 0x16108]
sbb eax, edx
push eax
push ecx
lea ecx, [esp + 0x3724]
push ecx
jmp 0x405164
lea ecx, [esp + 0x13a2c]
jmp 0x4050df
mov edx, dword [esp + 0x16100]
mov eax, dword [esp + 0x160fc]
push 0
push edx
push eax
lea ecx, [esp + 0xd238]
call fcn.00434b50
mov ecx, dword [esp + 0x16104]
sub ecx, dword [esp + 0x160fc]
mov edx, dword [esp + 0x16108]
sbb edx, dword [esp + 0x16100]
lea eax, [esp + 0x371c]
push edx
push ecx
push eax
lea ecx, [esp + 0xd238]
call fcn.00434f90
mov byte [esp + 0x2ee60], 6
lea ecx, [esp + 0x164]
call fcn.00468930
jmp 0x405563
inc dword [esp + 0x1c]
call fcn.00470a60
jmp 0x405563
cmp byte [esp + 0x1610d], 0
je 0x40520b
cmp byte [esp + 0x13], 0
jne 0x40520b
mov edx, dword [esp + 0x88]
mov eax, dword [esp + 0x84]
push 0
lea ecx, [esp + 0x19170]
push ecx
push edx
push eax
lea ecx, [esp + 0xd23c]
push ecx
mov ecx, ebx
call fcn.00401b60
mov edx, dword [esp + 0x90]
mov ecx, dword [ebx + 0x1ed8]
push edx
push 0
lea eax, [esp + 0x19174]
push eax
push ecx
lea edx, [esp + 0x372c]
push edx
lea eax, [esp + 0xd240]
push eax
mov ecx, ebx
call fcn.00403460
call fcn.00470a60
jmp 0x405563
mov ecx, dword [ebx + 0x1ed8]
call fcn.0044f190
mov ecx, dword [esp + 0x88]
mov edx, dword [esp + 0x84]
push 0
push ecx
push edx
lea ecx, [esp + 0xd238]
call fcn.00434b50
lea ecx, [esp + 0xd22c]
call fcn.0040fd20
mov eax, dword [esp + 0xab4c]
test eax, eax
je 0x40525f
push eax
call fcn.004b01c1
add esp, 4
mov dword [esp + 0xab4c], 0
xor eax, eax
mov dword [esp + 0xab50], eax
mov dword [esp + 0xab54], eax
mov ecx, 0x33a
lea esi, [esp + 0x13a2c]
lea edi, [esp + 0x9f1c]
rep movsd dword es:[edi], dword [esi]
mov dword [esp + 0xab4c], eax
mov ecx, dword [esp + 0x14660]
mov dword [esp + 0xab50], eax
mov dword [esp + 0xab54], eax
mov dword [esp + 0xab50], eax
mov dword [esp + 0xab54], eax
mov dword [esp + 0xab50], ecx
cmp ecx, eax
jbe 0x4052fa
mov esi, ecx
cmp ecx, 0x20
ja 0x4052c5
mov esi, 0x20
push esi
push 0
call fcn.004b024f
add esp, 8
mov dword [esp + 0xab4c], eax
test eax, eax
jne 0x4052ec
mov ecx, 0x5072f4
call fcn.0042cb70
mov eax, dword [esp + 0xab4c]
mov ecx, dword [esp + 0x14660]
mov dword [esp + 0xab54], esi
test ecx, ecx
je 0x405310
push ecx
mov ecx, dword [esp + 0x14660]
push ecx
push eax
call fcn.004b04f0
add esp, 0xc
mov edx, dword [esp + 0x9f24]
mov eax, dword [esp + 0x90]
and edx, 0xfffffff7
mov word [esp + 0x9f24], dx
test eax, eax
je 0x40533d
push eax
lea eax, [esp + 0x9f20]
push eax
mov ecx, ebx
call fcn.00401970
lea ecx, [esp + 0xd22c]
call fcn.0040f880
test al, al
jne 0x405368
lea ecx, [esp + 0xd22c]
call fcn.0040f8a0
test al, al
jne 0x405368
mov cl, byte [esp + 0x1610d]
mov byte [esp + 0x16], cl
cmp byte [esp + 0x16], 0
je 0x4053bb
mov esi, dword [ebx + 0x28]
mov eax, dword [esi + 0xc]
movzx edx, word [esp + 0x9f24]
push eax
mov ecx, ebx
call fcn.004011c0
mov ecx, edx
and ecx, 0xe0
cmp eax, ecx
jbe 0x4053bb
and edx, 0xffffff1f
mov word [esp + 0x9f24], dx
mov edx, dword [esi + 0xc]
push edx
mov ecx, ebx
call fcn.004011c0
mov ecx, dword [esp + 0x9f24]
or eax, ecx
mov word [esp + 0x9f24], ax
lea ecx, [esp + 0x371c]
call fcn.0040c820
push 0
push 0x74
lea ecx, [esp + 0x3724]
call fcn.0040c3a0
lea edx, [esp + 0xd22c]
push edx
lea ecx, [esp + 0x3720]
call fcn.0040b630
call fcn.00470a60
jmp 0x405563
test byte [esp + 0x8c], 1
jne 0x40540f
mov eax, dword [ebx + 0x28]
mov byte [esp + 0x12], 0
cmp dword [eax + 0x392c], edi
jne 0x405414
mov byte [esp + 0x12], 1
mov ecx, dword [esp + 0x9f40]
push ecx
call fcn.00435650
test al, al
je 0x40543a
mov edx, dword [esp + 0x9f24]
or edx, 0xe0
mov word [esp + 0x9f24], dx
cmp byte [esp + 0x30], 0
jne 0x405448
cmp byte [esp + 0x12], 0
je 0x40546b
mov eax, dword [ebx + 0x28]
mov byte [esp + 0x9f3d], 0x30
cmp word [eax + 0x341c], di
jne 0x405464
mov byte [esp + 0x9f3c], 0x14
cmp byte [esp + 0x12], 0
jne 0x40549e
mov ecx, dword [ebx + 0x1ed8]
add ecx, 0x1b6b4
call fcn.0041adf0
xor ecx, ecx
add eax, dword [esp + 0xabfc]
adc ecx, dword [esp + 0xac00]
mov dword [esp + 0x98], ecx
js 0x4054a9
jg 0x40549e
cmp eax, 0x8000
jbe 0x4054a9
mov ecx, dword [ebx + 0x1ed8]
call fcn.0044f190
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x2c]
push edx
mov edx, dword [ebx + 0x1ed8]
push 1
push eax
push ecx
push edx
lea eax, [esp + 0x1c8]
push eax
mov ecx, ebx
call fcn.00403260
cmp byte [esp + 0x30], 0
jne 0x405532
cmp byte [esp + 0x12], 0
je 0x4054fc
push edi
mov ecx, ebx
call fcn.00403320
push esi
call fcn.004024f0
push edi
mov ecx, ebx
call fcn.00402c30
mov dword [ebx + 8], edi
mov dword [ebx + 4], edi
jmp 0x405532
mov eax, dword [ebx + 0x28]
mov edx, dword [eax + 0x392c]
lea ecx, [eax + 0x3a74]
movzx eax, byte [ebx + 0x1eec]
push ecx
mov ecx, dword [ebx + 0x1ed8]
dec edx
push edx
push eax
call fcn.00452ec0
cmp byte [esp + 0xc5fd], 0
je 0x40553c
mov byte [ebx + 0x1eec], 1
cmp byte [esp + 0xc5fd], 0
jne 0x405547
mov ecx, dword [ebx + 0x1ed8]
call fcn.0044f190
call fcn.00470a60
mov dword [ebx + 0x20], edi
mov byte [esp + 0x2ee60], 6
lea ecx, [esp + 0x1b4]
call fcn.00434500
mov eax, dword [esp + 0x24]
inc eax
mov dword [esp + 0x24], eax
cmp eax, dword [esp + 0x158]
jb 0x404832
mov ecx, dword [ebx + 0x1ed8]
call fcn.0044f190
cmp dword [esp + 0x38], 0
mov ecx, dword [ebx + 0x28]
mov dword [ecx + 0x5360], 0
jle 0x4055a4
push 6
mov ecx, 0x5072f4
call fcn.0042c9e0
cmp dword [esp + 0x3c], 0
jne 0x405633
cmp dword [esp + 0x1c], 0
jne 0x405633
push 0xa
mov ecx, 0x5072f4
call fcn.0042c9e0
lea ecx, [esp + 0x371c]
call fcn.00434220
mov byte [esp + 0x2ee60], 3
lea ecx, [esp + 0x1916c]
call fcn.0047b890
mov byte [esp + 0x2ee60], 2
lea ecx, [esp + 0x371c]
call fcn.0040bd50
mov byte [esp + 0x2ee60], 1
lea ecx, [esp + 0xd22c]
call fcn.0040bd50
mov byte [esp + 0x2ee60], 9
mov eax, dword [esp + 0x14c]
test eax, eax
je 0x405626
push eax
call fcn.004b01c1
add esp, 4
mov byte [esp + 0x2ee60], 0xb
jmp 0x405d8a
cmp byte [esp + 0x14], 0
lea ecx, [esp + 0x371c]
je 0x405650
lea edx, [esp + 0xd22c]
push edx
call fcn.0040ebd0
jmp 0x405660
mov eax, dword [esp + 0x40]
push 0
push 0
push 0
push eax
call fcn.0040f300
mov byte [esp + 0x2ee60], 3
lea ecx, [esp + 0x1916c]
call fcn.0047b890
lea ecx, [esp + 0x3b3a]
push ecx
lea edx, [esp + 0x373d]
push edx
push 0
mov ecx, 0x507300
call fcn.0041d530
mov eax, dword [ebx + 0x28]
lea esi, [eax + 0x3b34]
mov al, byte [esi]
test al, al
je 0x4056c9
xor ecx, ecx
cmp al, 0x40
sete cl
lea edx, [esp + 0x3739]
dec ecx
and ecx, esi
mov eax, ecx
push eax
push edx
call fcn.00470ca0
test al, al
jne 0x4056c9
push 2
mov ecx, 0x5072f4
call fcn.0042d1d0
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x3944], 0
je 0x4057fc
push 0x33e
call fcn.00466860
push eax
call fcn.0048c3f0
call fcn.0048ca90
cmp dword [esp + 0x158], 0
mov dword [esp + 0x1c], 0
jbe 0x4057fc
mov ecx, dword [esp + 0x1c]
push ecx
lea ecx, [esp + 0xa8]
call fcn.004063e0
mov esi, eax
mov ecx, 0x12
lea edi, [esp + 0x4c]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0x78]
cmp eax, 2
je 0x405734
cmp eax, 3
jne 0x4057e6
lea ecx, [esp + 0x19f0]
call fcn.004128b0
lea ecx, [esp + 0x1a14]
call fcn.004128b0
lea ecx, [esp + 0x1a38]
call fcn.004128b0
mov edi, dword [esp + 0x50]
mov esi, dword [esp + 0x4c]
push 0
lea edx, [esp + 0xde0]
push edx
push edi
push esi
call fcn.0043ad50
test al, al
je 0x4057e6
lea ecx, [esp + 0x19f0]
call fcn.00472ea0
cmp eax, dword [esp + 0x64]
jne 0x4057e6
cmp edx, dword [esp + 0x68]
jne 0x4057e6
mov eax, dword [esp + 0x19dc]
cmp eax, dword [esp + 0x54]
jne 0x4057e6
mov ecx, dword [esp + 0x19e0]
cmp ecx, dword [esp + 0x58]
jne 0x4057e6
mov edx, dword [esp + 0x5c]
and edx, 0xffffffdf
push edx
push edi
push esi
call fcn.004356e0
test al, al
jne 0x4057d9
push esi
call fcn.0046fe80
push eax
push 0x4bf
call fcn.00466860
push eax
mov eax, dword [esp + 0x20]
push eax
call fcn.00499dd0
add esp, 0xc
push 0
push esi
call fcn.0048c4e0
call fcn.0048ca90
mov eax, dword [esp + 0x1c]
inc eax
mov dword [esp + 0x1c], eax
cmp eax, dword [esp + 0x158]
jb 0x405704
cmp byte [esp + 0xc629], 0
je 0x405813
lea ecx, [esp + 0xc629]
mov dword [esp + 0x18], ecx
jmp 0x40581e
lea edx, [esp + 0x3739]
mov dword [esp + 0x18], edx
cmp word [esp + 0xca2a], 0
lea edi, [esp + 0xca2a]
jne 0x405837
lea edi, [esp + 0x3b3a]
mov eax, dword [ebx + 0x28]
mov edx, dword [esp + 0x18]
add eax, 0x5fc2
mov cl, byte [edx]
mov byte [eax], cl
inc edx
inc eax
test cl, cl
jne 0x405843
mov eax, dword [ebx + 0x28]
mov edx, edi
add eax, 0x63c2
movzx ecx, word [edx]
mov word [eax], cx
add edx, 2
add eax, 2
test cx, cx
jne 0x405857
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x3a72], cl
je 0x405a39
mov esi, dword [ebx + 0x1ed8]
test esi, esi
je 0x405891
mov ecx, esi
call fcn.0044edd0
push esi
call fcn.004afad9
add esp, 4
lea ecx, [esp + 0x2766c]
mov dword [ebx + 0x1ed8], 0
call fcn.0041fdd0
mov byte [esp + 0x2ee60], 0xd
mov eax, dword [ebx + 0x28]
mov byte [esp + 0x2b0de], 1
mov dword [esp + 0x2b5a0], 1
movzx ecx, byte [eax + 0x3938]
mov byte [esp + 0x2afa4], cl
movzx edx, byte [eax + 0x3947]
mov byte [esp + 0x2afb3], dl
movzx ecx, byte [eax + 0x3971]
mov byte [esp + 0x2afdd], cl
movzx edx, byte [eax + 0x3989]
mov byte [esp + 0x2aff5], dl
mov ecx, 0x54
add eax, 0x341c
lea edx, [esp + 0x2aa88]
mov word [esp + 0x2c9fe], cx
sub edx, eax
jmp 0x405920
movzx ecx, word [eax]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x405920
mov esi, dword [esp + 0x18]
push edi
push esi
call fcn.004355d0
test al, al
jne 0x40597a
mov edi, edi
mov edx, dword [ebx + 0x28]
cmp byte [edx + 0x3b34], 0x2e
je 0x405a25
push edi
push esi
call fcn.0047efd0
test al, al
sete al
mov byte [esp + 0x14], al
cmp al, 1
je 0x40596f
push edi
push esi
call fcn.004355d0
test al, al
je 0x405940
cmp byte [esp + 0x14], 0
jne 0x405a25
call fcn.0048c850
mov eax, dword [esp + 0x18]
push edi
push eax
lea ecx, [esp + 0x27674]
call fcn.0041d330
mov ecx, dword [esp + 0x2e230]
push 0x4c67ac
call fcn.004703e0
mov esi, dword [0x5072f8]
lea ecx, [esp + 0x2766c]
push ecx
lea ecx, [ebx + 0x30]
call fcn.00433770
cmp esi, dword [0x5072f8]
je 0x405a25
mov byte [esp + 0x2ee60], 3
lea ecx, [esp + 0x2766c]
call fcn.0041fa90
mov byte [esp + 0x2ee60], 2
lea ecx, [esp + 0x371c]
call fcn.0040bd50
mov byte [esp + 0x2ee60], 1
lea ecx, [esp + 0xd22c]
call fcn.0040bd50
mov byte [esp + 0x2ee60], 0xe
mov eax, dword [esp + 0x14c]
test eax, eax
je 0x405a18
push eax
call fcn.004b01c1
add esp, 4
mov byte [esp + 0x2ee60], 0x10
jmp 0x405d8a
mov byte [esp + 0x2ee60], 3
lea ecx, [esp + 0x2766c]
call fcn.0041fa90
mov edx, dword [ebp + 0x14]
cmp byte [edx], 0x4d
je 0x405a51
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x398a], 0
je 0x405ce0
push 0x33f
call fcn.00466860
push eax
call fcn.0048c3f0
push 1
push 0
lea ecx, [esp + 0xac]
call fcn.00406bd0
mov esi, dword [esp + 0x158]
or edi, 0xffffffff
lea ecx, [esp + 0x94]
dec esi
mov dword [esp + 0x1c], edi
mov dword [esp + 0x40], edi
call fcn.00436ec0
mov byte [esp + 0x2ee60], 0x12
mov ecx, dword [ebx + 0x28]
cmp byte [ecx + 0x398d], 0
mov byte [esp + 0x14], 0
je 0x405ae8
call fcn.0041da00
test al, al
jne 0x405ae8
cmp dword [esp + 0x38], 0
jne 0x405ae8
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x3948], 0
jne 0x405ae8
cmp byte [eax + 0x3949], 0
jne 0x405ae8
mov edi, dword [esp + 0x158]
mov byte [esp + 0x14], 1
xor esi, esi
mov dword [esp + 0x1c], edi
mov dword [esp + 0x40], 1
mov dword [esp + 0x18], esi
cmp esi, edi
je 0x405ccc
test byte [esp + 0x18], 0xf
jne 0x405b00
call fcn.00470a60
mov ecx, dword [esp + 0x18]
push ecx
lea ecx, [esp + 0xa8]
call fcn.004063e0
mov esi, eax
mov ecx, 0x12
lea edi, [esp + 0x4c]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0x78]
cmp eax, 2
je 0x405b30
cmp eax, 3
jne 0x405cb6
mov edx, dword [esp + 0x5c]
push edx
call fcn.00435680
test al, al
jne 0x405cb6
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x398d], 0
mov edi, dword [esp + 0x50]
mov esi, dword [esp + 0x4c]
jne 0x405b6b
mov ecx, dword [esp + 0x5c]
push ecx
call fcn.004356a0
test al, al
jne 0x405b6b
push edi
push esi
call fcn.00436420
mov edx, dword [ebp + 0x14]
cmp byte [edx + 1], 0x46
mov eax, dword [esp + 0x5c]
push eax
setne byte [esp + 0x17]
call fcn.00435650
test al, al
je 0x405c23
cmp byte [esp + 0x13], 0
je 0x405cb6
mov eax, dword [ebx + 0x28]
mov cl, byte [eax + 0x398d]
test cl, cl
je 0x405bdb
cmp byte [esp + 0x14], 0
je 0x405bdb
push edi
push esi
call fcn.004355d0
test al, al
je 0x405cb6
push edi
push esi
lea ecx, [esp + 0x9c]
call fcn.00436f70
lea ecx, [esp + 0x94]
call fcn.00436800
mov byte [esp + 0x12], 1
jmp 0x405c74
cmp byte [eax + 0x398c], 0
je 0x405c0a
push edi
push esi
call fcn.00435aa0
test al, al
je 0x405bf8
push edi
push esi
call fcn.00436b40
jmp 0x405c70
push 0x91
mov byte [esp + 0x16], 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
jmp 0x405c74
test cl, cl
je 0x405c1a
lea ecx, [esp + 0x94]
call fcn.00436800
push edi
push esi
call fcn.00435990
jmp 0x405c70
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x398d], 0
push edi
push esi
je 0x405c5b
call fcn.004355d0
test al, al
je 0x405cb6
push edi
push esi
lea ecx, [esp + 0x9c]
call fcn.00436f70
push 0
push esi
call fcn.0048c4e0
call fcn.0048ca90
jmp 0x405cb6
cmp byte [eax + 0x398c], 0
je 0x405c6b
call fcn.00436930
jmp 0x405c70
call fcn.00435930
mov byte [esp + 0x12], al
cmp byte [esp + 0x12], 0
je 0x405c8a
push 0
push esi
call fcn.0048c4e0
call fcn.0048ca90
jmp 0x405cb6
push esi
call fcn.0046fe80
push eax
push 0x202
call fcn.00466860
push eax
lea ecx, [esp + 0x3b42]
push ecx
call fcn.00499dd0
add esp, 0xc
mov ecx, 0x5072f4
call fcn.0042caa0
mov eax, dword [esp + 0x18]
add eax, dword [esp + 0x40]
mov dword [esp + 0x18], eax
cmp eax, dword [esp + 0x1c]
jne 0x405af4
mov byte [esp + 0x2ee60], 3
lea ecx, [esp + 0x94]
call fcn.00436f10
test byte [esp + 0x9f08], 1
je 0x405d3e
mov edx, dword [ebx + 0x28]
cmp dword [edx + 0x3934], 0
je 0x405d3e
lea ecx, [esp + 0x1b4]
call fcn.0045f7e0
mov byte [esp + 0x2ee60], 0x13
mov edx, dword [ebx + 0x28]
lea eax, [esp + 0xca2a]
push eax
lea ecx, [esp + 0xc62d]
push ecx
push edx
lea ecx, [esp + 0x1c0]
call fcn.0045dcd0
mov byte [esp + 0x2ee60], 3
lea ecx, [esp + 0x1b4]
call fcn.0045dc40
mov byte [esp + 0x2ee60], 2
lea ecx, [esp + 0x371c]
call fcn.0040bd50
mov byte [esp + 0x2ee60], 1
lea ecx, [esp + 0xd22c]
call fcn.0040bd50
mov byte [esp + 0x2ee60], 0x14
mov eax, dword [esp + 0x14c]
test eax, eax
je 0x405d82
push eax
call fcn.004b01c1
add esp, 4
mov byte [esp + 0x2ee60], 0x16
mov eax, dword [esp + 0xb4]
test eax, eax
je 0x405d9e
push eax
call fcn.004b01c1
add esp, 4
mov byte [esp + 0x2ee60], 0
mov eax, dword [esp + 0xa4]
test eax, eax
je 0x405dba
push eax
call fcn.004b01c1
add esp, 4
mov dword [esp + 0x2ee60], 0xffffffff
lea ecx, [esp + 0x16d3c]
call fcn.004692a0
mov ecx, dword [esp + 0x2ee58]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2ee40]
xor ecx, esp
call fcn.004affec
mov esp, ebp
pop ebp
ret 0x10