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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x4c2b8b
mov eax, dword fs:[0]
push eax
push ecx
mov eax, 0x2ee4c
call fcn.004b1040
mov eax, dword [0x4da8f0]
xor eax, esp
mov dword [esp + 0x2ee48], eax
push ebx
push esi
push edi
mov eax, dword [0x4da8f0]
xor eax, esp
push eax
lea eax, [esp + 0x2ee60]
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 + 0x40], esi
mov dword [esp + 0x18], edi
mov dword [esp + 0x3c], edx
mov dword [esp + 0x24], edx
mov dword [esp + 0x20], edx
cmp byte [eax + 0x3f4c], dl
je 0x403c9a
mov dword [eax + 0x3958], edx
mov dword [eax + 0x395c], edx
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x410], dl
je 0x403d46
push 0x4c77cc
push esi
call fcn.00456bd0
test al, al
jne 0x403d44
push 0x4c77c8
push esi
call fcn.00456bd0
test al, al
jne 0x403d44
push 0x4c77c4
push esi
call fcn.00456bd0
test al, al
jne 0x403d38
mov eax, esi
dec eax
lea ecx, [ecx]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x403ce0
mov ecx, dword [str..ext]
mov dword [eax], ecx
mov dl, byte [0x4c77c0]
mov byte [eax + 4], dl
test edi, edi
je 0x403d38
cmp word [edi], 0
je 0x403d38
mov eax, edi
add eax, 0xfffffffe
jmp 0x403d10
mov cx, word [eax + 2]
add eax, 2
test cx, cx
jne 0x403d10
mov ecx, dword [0x4c77b0]
mov dword [eax], ecx
mov edx, dword [0x4c77b4]
mov dword [eax + 4], edx
mov cx, word [0x4c77b8]
mov word [eax + 8], cx
push esi
call fcn.00458870
push edi
call fcn.00458890
xor edx, edx
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x398b], 0
je 0x403d5a
push esi
call fcn.00437080
xor edx, edx
mov eax, dword [ebx + 0x28]
mov byte [esp + 0x2e254], 0
mov ecx, dword [eax + 0x3930]
cmp ecx, edx
mov byte [esp + 0x2e654], 0
jge 0x403d89
mov edi, dword [eax + 0x3958]
or edi, dword [eax + 0x395c]
mov dword [esp + 0x48], ecx
jne 0x403d8d
mov dword [esp + 0x48], edx
mov ecx, dword [eax + 0x3958]
or ecx, dword [eax + 0x395c]
je 0x403da4
mov byte [ebx + 0x2400], 1
jmp 0x403dab
and dword [eax + 0x393c], 0xffffffe7
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x281c], 0
lea ecx, [eax + 0x281c]
jne 0x403dd3
add eax, 0x2c1c
cmp word [eax], dx
je 0x403dd3
push 0x400
push ecx
push eax
call fcn.00456730
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 + 0x16d54]
call fcn.00469960
mov dword [esp + 0x2ee68], 0
lea edx, [esp + 0x18d6c]
mov eax, esi
sub edx, esi
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x403e10
mov eax, dword [ebx + 0x28]
lea ecx, [esp + 0x2e98]
mov dword [esp + 0x1916c], eax
call fcn.004129c0
lea ecx, [esp + 0x2ebc]
call fcn.004129c0
lea ecx, [esp + 0x2ee0]
call fcn.004129c0
mov eax, dword [ebx + 0x28]
push eax
lea ecx, [esp + 0xb0]
call fcn.00406b10
mov byte [esp + 0x2ee68], 1
mov eax, dword [ebx + 0x28]
xor edi, edi
cmp byte [eax + 0x3f4c], 0
lea esi, [eax + 0x3f4c]
mov dword [esp + 0x2c], edi
mov dword [esp + 0x30], edi
je 0x403ef2
push 0x48
lea ecx, [esp + 0x58]
push edi
push ecx
call fcn.004b14b0
add esp, 0xc
lea ecx, [esp + 0x16c]
mov dword [esp + 0x54], esi
mov dword [esp + 0x80], 2
call fcn.004129c0
lea ecx, [esp + 0x16c]
call fcn.00473e70
lea ecx, [esp + 0x16c]
call fcn.004739d0
lea ecx, [esp + 0x16c]
mov dword [esp + 0x68], eax
call fcn.00473c80
mov dword [esp + 0x70], edx
lea edx, [esp + 0x54]
push edx
lea ecx, [esp + 0xb0]
mov dword [esp + 0x70], eax
call fcn.00406340
mov edi, 1
jmp 0x4040d7
lea eax, [esp + 0x2284]
push eax
lea ecx, [esp + 0x16d48]
call fcn.0046a4b0
test eax, eax
jne 0x4040d7
mov esi, dword [esp + 0x2c]
mov ecx, dword [esp + 0x160]
mov eax, dword [esp + 0x18]
push edi
push ecx
mov ecx, dword [esp + 0x48]
lea edx, [esp + 0x228c]
push edx
push eax
push ecx
mov ecx, ebx
call fcn.00402130
test al, al
je 0x4040b7
push 0x48
lea edx, [esp + 0x58]
push 0
push edx
call fcn.004b14b0
add esp, 0xc
lea ecx, [esp + 0x2684]
lea eax, [esp + 0x2284]
push ecx
mov dword [esp + 0x58], eax
call fcn.004708e0
mov ecx, dword [esp + 0x2e84]
movzx edx, al
neg edx
sbb edx, edx
not edx
lea eax, [esp + 0x2684]
and edx, eax
mov eax, dword [esp + 0x2e8c]
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x2e90]
mov dword [esp + 0x58], edx
mov edx, dword [esp + 0x2e88]
mov dword [esp + 0x68], ecx
lea ecx, [esp + 0x2e98]
mov dword [esp + 0x60], edx
mov dword [esp + 0x64], eax
call fcn.00473c80
lea ecx, [esp + 0x2ee0]
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], edx
call fcn.00473c80
lea ecx, [esp + 0x2284]
mov dword [esp + 0x74], eax
mov ax, word [esp + 0x18d68]
mov dword [esp + 0x78], edx
mov dx, word [esp + 0x18d64]
push ecx
mov ecx, dword [ebx + 0x28]
mov word [esp + 0x80], dx
mov word [esp + 0x82], ax
mov dword [esp + 0x84], 2
call fcn.0041d400
test al, al
je 0x404016
or dword [esp + 0x94], 1
mov eax, dword [ebx + 0x28]
mov edx, dword [eax + 0x6bc8]
cmp dword [edx + 0x20], 0
jbe 0x404060
lea ecx, [esp + 0x1bc]
push ecx
lea edx, [esp + 0x2ea58]
push edx
lea ecx, [esp + 0x5c]
push ecx
push eax
call fcn.004014e0
mov edx, dword [esp + 0x2e94]
mov ecx, dword [ebx + 0x28]
push 0
push 0
push edx
lea eax, [esp + 0x2ea60]
push eax
call fcn.0041dac0
test al, al
jne 0x4040b7
lea ecx, [esp + 0x54]
push ecx
lea ecx, [esp + 0xb0]
call fcn.00406340
cmp byte [esp + 0x2e94], 0
jne 0x4040b7
mov edx, dword [ebx + 0x28]
mov ecx, dword [esp + 0x2e88]
inc edi
cmp dword [edx + 0x393c], 0
je 0x40409e
mov eax, dword [esp + 0x2e84]
add esi, eax
adc dword [esp + 0x30], ecx
jmp 0x4040b7
cmp dword [esp + 0x30], ecx
jg 0x4040b7
mov eax, dword [esp + 0x2e84]
jl 0x4040b1
cmp esi, eax
ja 0x4040b7
mov esi, eax
mov dword [esp + 0x30], ecx
lea edx, [esp + 0x2284]
push edx
lea ecx, [esp + 0x16d48]
call fcn.0046a4b0
test eax, eax
je 0x403f12
mov dword [esp + 0x2c], esi
mov eax, dword [esp + 0x160]
mov esi, dword [esp + 0x40]
push edi
push eax
push 0
push 0
push 0
mov ecx, ebx
call fcn.00402130
cmp dword [esp + 0x1755c], 0
je 0x404134
mov ecx, dword [ebx + 0x28]
cmp byte [ecx + 0x3a0f], 0
je 0x404128
push 0x44c
call fcn.004671c0
push eax
call fcn.0049a620
add esp, 4
push 6
mov ecx, 0x508304
call fcn.0042d410
jmp 0x404134
push 6
mov ecx, 0x508304
call fcn.0042cc20
lea ecx, [esp + 0xac]
call fcn.00406b90
lea ecx, [esp + 0x198]
call fcn.004129c0
lea ecx, [esp + 0x198]
call fcn.00473e70
mov edx, dword [ebx + 0x28]
push edx
lea ecx, [esp + 0xd238]
call fcn.0040e380
mov byte [esp + 0x2ee68], 2
mov eax, dword [ebx + 0x28]
push eax
lea ecx, [esp + 0x3728]
call fcn.0040e380
mov byte [esp + 0x2ee68], 3
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x351e], 0
je 0x4041a4
cmp byte [eax + 0x351c], 0
je 0x4041a4
mov ecx, 1
jmp 0x4041a6
xor ecx, ecx
mov byte [esp + 0xc60c], 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 + 0x3734]
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 + 0xd240]
call fcn.004349d0
test al, al
je 0x404449
mov eax, dword [ebx + 0x28]
mov edx, dword [eax + 0x3958]
or edx, dword [eax + 0x395c]
jne 0x404224
cmp byte [esp + 0x16115], dl
jne 0x40427a
cmp dword [eax + 0x393c], edx
je 0x40427a
lea ecx, [esp + 0xd234]
call fcn.004348e0
cmp eax, 0x14
jne 0x404255
test edx, edx
jne 0x404255
lea ecx, [esp + 0xd234]
call fcn.004346c0
mov dword [esp + 0xde54], 1
jmp 0x404457
mov eax, dword [ebx + 0x28]
mov ecx, dword [eax + 0x3958]
or ecx, dword [eax + 0x395c]
je 0x40427a
xor ecx, ecx
mov dword [eax + 0x3958], ecx
mov dword [eax + 0x395c], ecx
mov byte [ebx + 0x2400], cl
push 0
lea ecx, [esp + 0xd238]
call fcn.0040d340
lea ecx, [esp + 0xd234]
call fcn.0040b670
test al, al
jne 0x4042a4
push edi
push esi
mov ecx, 0x508304
call fcn.0042d500
lea ecx, [esp + 0xd234]
call fcn.0040b390
push 0
lea ecx, [esp + 0xd238]
call fcn.0040b4f0
test al, al
je 0x4042ce
push 4
mov ecx, 0x508304
call fcn.0042d410
lea ecx, [esp + 0xd234]
call fcn.0040b580
test al, al
je 0x4042ea
push 3
mov ecx, 0x508304
call fcn.0042d410
mov al, byte [esp + 0x16115]
mov byte [esp + 0xc605], al
push 1
push edi
push esi
push 0
call fcn.00409f00
mov eax, dword [ebx + 0x28]
mov ecx, dword [eax + 0x3958]
mov eax, dword [eax + 0x395c]
mov edx, ecx
or edx, eax
je 0x404327
push eax
push ecx
lea eax, [esp + 0x372c]
push eax
call fcn.004802f0
cmp dword [esp + 0xd238], 0xffffffff
mov byte [esp + 0x16], 0
setne al
mov byte [esp + 0x14], al
test al, al
je 0x404526
cmp dword [esp + 0x160], 0
jne 0x40435d
mov ecx, dword [ebx + 0x28]
cmp byte [ecx + 0x3a0f], 0
je 0x40453e
lea ecx, [esp + 0x3724]
call fcn.0040b5c0
push 0
push 1
lea edx, [esp + 0xd23c]
push edx
lea ecx, [esp + 0x3730]
call fcn.0040f470
lea eax, [esp + 0x15]
push eax
lea ecx, [esp + 0x1a]
push ecx
lea edx, [esp + 0xb4]
push edx
lea eax, [esp + 0xd240]
push eax
mov ecx, ebx
call fcn.00402780
cmp byte [esp + 0x15], 0
je 0x40453e
xor esi, esi
cmp dword [esp + 0x160], esi
jbe 0x4043e0
lea edi, [esi + 4]
jmp 0x4043c0
push esi
lea ecx, [esp + 0xb0]
call fcn.004063f0
cmp dword [eax + 0x2c], edi
jne 0x40453e
inc esi
cmp esi, dword [esp + 0x160]
jb 0x4043c0
mov ecx, dword [ebx + 0x28]
cmp dword [ecx + 0x3974], 0
jne 0x40453e
push 0xa
mov ecx, 0x508304
call fcn.0042cc20
lea ecx, [esp + 0x3724]
call fcn.004346c0
mov byte [esp + 0x2ee68], 2
lea ecx, [esp + 0x3724]
call fcn.0040bd50
mov byte [esp + 0x2ee68], 1
lea ecx, [esp + 0xd234]
call fcn.0040bd50
mov byte [esp + 0x2ee68], 0
lea ecx, [esp + 0xac]
call fcn.00402710
jmp 0x405dc4
cmp dword [esp + 0xde54], 1
jne 0x404508
push 1
push edi
push esi
lea ecx, [esp + 0x3730]
mov byte [esp + 0xc63c], 1
call fcn.00434fa0
mov edx, dword [ebx + 0x28]
cmp byte [edx + 0x410], 0
je 0x4044e4
lea ecx, [esp + 0x1bc]
call fcn.00434590
mov byte [esp + 0x2ee68], 4
mov eax, dword [ebx + 0x28]
lea ecx, [eax + 0x810]
push ecx
add eax, 0x410
push eax
lea ecx, [esp + 0x1c4]
call fcn.00434f60
push 0x7fffffff
push 0x7fffffff
lea edx, [esp + 0x372c]
push edx
lea ecx, [esp + 0x1c8]
call fcn.00435430
mov dword [esp + 0xc610], eax
mov byte [esp + 0x2ee68], 3
lea ecx, [esp + 0x1bc]
call fcn.004349a0
mov eax, dword [ebx + 0x28]
cmp dword [eax + 0x393c], 0
je 0x404501
cmp dword [eax + 0x392c], 0
je 0x404501
mov byte [esp + 0xc605], 1
push 0
jmp 0x4042fa
push 0
push esi
mov ecx, 0x508304
call fcn.0042d4e0
push 9
mov ecx, 0x508304
call fcn.0042d410
jmp 0x404303
push 0
push 0
lea edx, [esp + 0xd23c]
push edx
lea ecx, [esp + 0x3730]
call fcn.0040f470
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x3f4c], 0
jne 0x4045c1
cmp byte [esp + 0x14], 0
je 0x40455b
cmp byte [esp + 0x16115], 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 + 0x30]
mov eax, dword [esp + 0x2c]
push 0
push 2
push edx
push eax
call fcn.004b1ad0
mov edi, eax
jmp 0x404590
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 + 0x160], edi
jbe 0x40469c
mov ecx, dword [ebx + 0x28]
cmp byte [ecx + 0x3948], 0
je 0x4045f1
push esi
lea ecx, [esp + 0xb0]
call fcn.004063f0
cmp dword [eax + 0x2c], 2
je 0x404604
push esi
lea ecx, [esp + 0xb0]
call fcn.004063f0
cmp dword [eax + 0x2c], 1
jne 0x404614
push esi
lea ecx, [esp + 0xb0]
call fcn.004063f0
mov dword [eax + 0x2c], edi
push esi
lea ecx, [esp + 0xb0]
call fcn.004063f0
cmp dword [eax + 0x2c], 2
je 0x40463a
push esi
lea ecx, [esp + 0xb0]
call fcn.004063f0
cmp dword [eax + 0x2c], 3
jne 0x40468e
push esi
lea ecx, [esp + 0xb0]
call fcn.004063f0
mov edx, dword [eax + 8]
add dword [esp + 0xc624], edx
mov eax, dword [eax + 0xc]
push esi
adc dword [esp + 0xc62c], eax
lea ecx, [esp + 0xb0]
call fcn.004063f0
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 + 0xc62c]
sub eax, edx
lea edx, [eax + ecx]
lea eax, [edx + eax*2 + 0x20]
mov dword [esp + 0xc62c], eax
inc esi
cmp esi, dword [esp + 0x160]
jb 0x4045d2
cmp byte [esp + 0xc605], 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 + 0xb4]
call fcn.00406be0
mov esi, dword [ebx + 0x1ee0]
cmp esi, edi
je 0x4046e0
mov ecx, esi
call fcn.0044f3d0
push esi
call fcn.004b0b19
add esp, 4
push 0x1b8a0
call fcn.004b1a60
add esp, 4
mov dword [esp + 0x2c], eax
mov byte [esp + 0x2ee68], 5
cmp eax, edi
je 0x404714
mov ecx, dword [ebx + 0x28]
lea edx, [ebx + 0x1ef8]
push edx
mov edx, dword [ecx + 0xc]
push edx
mov ecx, eax
call fcn.00450fb0
jmp 0x404716
xor eax, eax
mov byte [esp + 0x2ee68], 3
mov ecx, dword [ebx + 0x28]
mov dword [ebx + 0x1ee0], eax
mov dword [ecx + 0x5360], eax
mov edx, dword [ebx + 0x28]
mov eax, dword [edx + 0x434c]
mov ecx, dword [ebx + 0x1ee0]
push eax
call fcn.0044f540
mov ecx, dword [ebx + 0x1ee0]
call fcn.004527d0
mov eax, dword [ebx + 0x1ee0]
mov dword [eax + 0x1b87c], ebx
lea eax, [ebx + 0x1ef8]
push eax
lea ecx, [esp + 0x19178]
call fcn.0047c630
mov byte [esp + 0x2ee68], 6
cmp byte [esp + 0x16115], 0
lea ecx, [esp + 0xd234]
lea edx, [esp + 0x3724]
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 + 0x15], 0
mov byte [esp + 0x17], 0
je 0x40480a
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x351c], 0
jne 0x4047bb
cmp byte [esp + 0x16], 0
je 0x4047d7
mov ecx, dword [ebx + 0x1ee8]
add dword [esp + 0xc624], ecx
mov edx, dword [ebx + 0x1eec]
adc dword [esp + 0xc628], edx
jmp 0x4047dc
mov byte [esp + 0x15], 1
lea ecx, [esp + 0x19174]
call fcn.0047dc10
movzx eax, word [esp + 0x13a22]
mov ecx, dword [esp + 0x16120]
push edi
lea edx, [eax + ecx + 7]
push edi
push edx
lea ecx, [esp + 0xd240]
call fcn.00434ff0
push 8
lea eax, [esp + 0x2e250]
push eax
call fcn.00422730
mov dword [esp + 0x4c], edi
mov dword [esp + 0x50], edi
mov dword [esp + 0x2c], edi
cmp dword [esp + 0x160], edi
jbe 0x40557e
mov ecx, dword [esp + 0x2c]
push ecx
lea ecx, [esp + 0xb0]
call fcn.004063f0
mov esi, eax
mov ecx, 0x12
lea edi, [esp + 0x54]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x80]
mov edx, dword [esp + 0x54]
mov eax, dword [esp + 0x58]
mov dword [esp + 0x38], edx
mov dword [esp + 0x28], eax
test esi, esi
je 0x405568
mov edi, dword [esp + 0x64]
cmp esi, 6
je 0x405067
cmp esi, 5
je 0x40518e
cmp esi, 4
je 0x40519c
lea ecx, [esp + 0x19f8]
call fcn.004129c0
lea ecx, [esp + 0x1a1c]
call fcn.004129c0
lea ecx, [esp + 0x1a40]
call fcn.004129c0
lea ecx, [esp + 0x1bc]
call fcn.00434590
mov byte [esp + 0x2ee68], 8
push edi
call fcn.00435af0
mov byte [esp + 0x16], al
test al, al
jne 0x4048ee
push edi
call fcn.00435b20
test al, al
jne 0x4048ee
push edi
call fcn.00435b10
test al, al
jne 0x4048ee
mov byte [esp + 0x44], al
jmp 0x40490a
cmp byte [esp + 0x16], 0
mov byte [esp + 0x44], 1
je 0x40490a
mov ecx, dword [ebx + 0x28]
cmp dword [ecx + 0x394c], 1
je 0x405554
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x3f4c], 0
jne 0x404958
movzx edx, byte [eax + 0x397d]
mov ecx, dword [esp + 0x28]
mov esi, dword [esp + 0x38]
push edx
lea eax, [esp + 0xde8]
push eax
push ecx
push esi
call fcn.0043b280
cmp byte [esp + 0x16], 0
mov byte [esp + 0x13], al
je 0x40496f
mov edx, dword [esp + 0x78]
mov eax, dword [esp + 0x74]
push edx
push eax
lea ecx, [esp + 0x1a48]
call fcn.00473cc0
jmp 0x40496f
push 1
lea ecx, [esp + 0x1c0]
mov byte [esp + 0x17], 0
call fcn.00434960
mov esi, dword [esp + 0x38]
cmp byte [esp + 0x44], 0
jne 0x404b81
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x3f4c], 0
jne 0x404b81
cmp byte [esp + 0x13], 0
je 0x4049b2
movzx ecx, byte [eax + 0x3989]
mov edx, dword [esp + 0x28]
neg ecx
sbb ecx, ecx
and ecx, 4
push ecx
push edx
push esi
lea ecx, [esp + 0x1c8]
call fcn.004349d0
cmp dword [esp + 0x1c0], 0xffffffff
jne 0x404a67
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x40]
push eax
push esi
push ecx
push edx
mov ecx, 0x508304
call fcn.0042d180
mov eax, dword [esp + 0x5c]
sub dword [esp + 0xc624], eax
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x2c]
sbb dword [esp + 0xc628], ecx
push edx
lea ecx, [esp + 0xb0]
call fcn.004063f0
inc dword [esp + 0x3c]
cmp dword [esp + 0x90], 0
mov dword [eax + 0x2c], 0
jl 0x405554
jg 0x404a2a
cmp dword [esp + 0x8c], 0
jbe 0x405554
cmp dword [esp + 0x98], 0
jne 0x405554
mov esi, 4
mov dword [esp + 0x80], esi
mov dword [ebx + 0x1ee4], 0
mov byte [esp + 0x2ee68], 6
lea ecx, [esp + 0x1bc]
call fcn.004349a0
jmp 0x404873
cmp byte [esp + 0x13], 0
je 0x404a8d
mov eax, dword [esp + 0x19f0]
lea ecx, [esp + 0x19f8]
mov dword [esp + 0x68], eax
call fcn.00473c80
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], edx
xor edi, edi
mov ecx, dword [esp + 0x28]
push ecx
push esi
push 1
mov ecx, 0x508310
call fcn.0041d6b0
lea edx, [esp + 0xa354]
push edx
mov edx, dword [ebx + 0x28]
lea eax, [esp + 0x9f58]
push eax
lea ecx, [esp + 0x5c]
push ecx
push edx
call fcn.004014e0
cmp byte [esp + 0x17], 0
je 0x404b34
lea ecx, [esp + 0xd234]
call fcn.004347e0
push 0
mov esi, eax
mov eax, dword [esp + 0x16124]
push 0
push eax
lea ecx, [esp + 0xd240]
mov edi, edx
call fcn.00434ff0
push 0
lea ecx, [esp + 0x19178]
push ecx
push edi
push esi
lea edx, [esp + 0xd244]
push edx
mov ecx, ebx
call fcn.004024a0
mov eax, dword [ebx + 0x28]
mov ecx, dword [eax + 0x392c]
dec ecx
push ecx
mov ecx, dword [ebx + 0x1ee0]
lea edx, [esp + 0x19178]
push edx
call fcn.00451920
mov esi, dword [esp + 0x38]
mov byte [ebx + 0x1ef4], 1
xor edi, edi
cmp byte [esp + 0xc605], 0
mov byte [esp + 0x17], 0
mov byte [esp + 0x15], 0
je 0x404c92
mov eax, dword [ebx + 0x28]
mov ecx, dword [eax + 0x393c]
mov byte [esp + 0x1f], 0
test cl, 2
je 0x404ba4
mov esi, dword [eax + 0x3940]
test esi, esi
jle 0x404ba4
mov edi, dword [esp + 0x24]
test edi, edi
jle 0x404ba8
mov eax, edi
cdq
idiv esi
test edx, edx
jne 0x404ba8
mov byte [esp + 0x1f], 1
jmp 0x404ba8
push edi
call fcn.00435b10
test al, al
jne 0x404a8d
xor edi, edi
mov dword [esp + 0x19e4], edi
mov dword [esp + 0x19e8], edi
jmp 0x404a8f
mov edi, dword [esp + 0x24]
test cl, 4
je 0x404bf6
lea eax, [esp + 0x9f54]
push eax
call fcn.00456b70
mov esi, eax
test esi, esi
je 0x404bee
lea ecx, [esp + 0x2e254]
push ecx
push esi
call fcn.00470920
test eax, eax
je 0x404bd7
mov byte [esp + 0x1f], 1
lea edx, [esp + 0x2e254]
mov eax, esi
sub edx, esi
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x404be2
jmp 0x404bf6
mov byte [esp + 0x2e254], 0
mov edx, dword [ebx + 0x28]
mov edx, dword [edx + 0x393c]
test dl, 8
jne 0x404c53
lea esi, [esp + 0x3741]
lea eax, [esp + 0x2e654]
mov cl, byte [eax]
cmp cl, byte [esi]
jne 0x404c32
test cl, cl
je 0x404c2e
mov cl, byte [eax + 1]
cmp cl, byte [esi + 1]
jne 0x404c32
add eax, 2
add esi, 2
test cl, cl
jne 0x404c12
xor eax, eax
jmp 0x404c37
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x404c53
test dl, 0x10
jne 0x404c5a
cmp dword [esp + 0x50], 0
jg 0x404c5a
jl 0x404c53
cmp dword [esp + 0x4c], 0x400000
ja 0x404c5a
cmp byte [esp + 0x1f], 0
je 0x404c7c
test edi, edi
jle 0x404c7c
mov ecx, dword [ebx + 0x1ee0]
call fcn.0044f790
xor eax, eax
mov byte [ebx + 0x1ef4], 0
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], eax
jmp 0x404c8c
mov eax, dword [esp + 0x5c]
add dword [esp + 0x4c], eax
mov ecx, dword [esp + 0x60]
adc dword [esp + 0x50], ecx
mov esi, dword [esp + 0x38]
xor edi, edi
xor eax, eax
jmp 0x404ca0
mov cl, byte [esp + eax + 0x3741]
mov byte [esp + eax + 0x2e654], cl
inc eax
test cl, cl
jne 0x404ca0
mov eax, dword [esp + 0x80]
cmp eax, 2
jne 0x404cc9
mov edx, dword [esp + 0x28]
push edi
push edi
push edi
push edx
jmp 0x404cd7
cmp eax, 3
jne 0x404cde
mov eax, dword [esp + 0x28]
push edi
push edi
push 1
push eax
push esi
push edi
call fcn.00409f40
mov eax, dword [esp + 0x19e4]
mov ecx, dword [esp + 0x19e8]
mov dword [esp + 0x9f34], eax
mov dword [esp + 0xac04], eax
mov eax, dword [ebx + 0x28]
xor edx, edx
mov dword [esp + 0xac08], ecx
mov dword [esp + 0x9f28], 0x74
mov dword [esp + 0x9f3c], edi
mov dword [esp + 0x9f30], edi
mov word [esp + 0x9f2c], dx
cmp byte [eax + 0x351c], dl
je 0x404d74
cmp byte [esp + 0x16], dl
jne 0x404d74
mov ecx, dword [esp + 0x64]
push ecx
call fcn.00435b20
test al, al
jne 0x404d74
mov edx, dword [esp + 0x9f2c]
mov eax, dword [esp + 0x2e24c]
mov ecx, dword [esp + 0x2e250]
or edx, 0x404
mov word [esp + 0x9f2c], dx
mov dword [esp + 0xab60], eax
mov dword [esp + 0xab64], ecx
mov edx, dword [ebx + 0x28]
mov byte [esp + 0x9f44], 0x1d
mov eax, dword [edx + 0xc]
cmp eax, 0x80000
ja 0x404db5
je 0x404dae
cmp eax, 0x10000
je 0x404dca
cmp eax, 0x20000
je 0x404da7
cmp eax, 0x40000
jne 0x404dca
mov eax, 0x40
jmp 0x404de1
mov eax, 0x20
jmp 0x404de1
mov eax, 0x60
jmp 0x404de1
cmp eax, 0x100000
je 0x404ddc
cmp eax, 0x200000
je 0x404dd5
cmp eax, 0x400000
je 0x404dce
xor eax, eax
jmp 0x404de1
mov eax, 0xc0
jmp 0x404de1
mov eax, 0xa0
jmp 0x404de1
mov eax, 0x80
mov ecx, dword [esp + 0x9f2c]
or ecx, eax
cmp byte [ebx + 0x1ef4], 0
mov word [esp + 0x9f2c], cx
je 0x404e0d
mov eax, dword [esp + 0x9f2c]
or eax, 0x10
mov word [esp + 0x9f2c], ax
mov ecx, dword [esp + 0x9f2c]
mov eax, dword [esp + 0x68]
or ecx, 0x8000
cmp byte [esp + 0x13], 0
mov word [esp + 0x9f2c], cx
mov dword [esp + 0x9f40], eax
je 0x404e75
mov ecx, 9
lea esi, [esp + 0x19f8]
lea edi, [esp + 0xab68]
rep movsd dword es:[edi], dword [esi]
mov ecx, 9
lea esi, [esp + 0x1a40]
lea edi, [esp + 0xabb0]
rep movsd dword es:[edi], dword [esi]
mov ecx, 9
lea esi, [esp + 0x1a1c]
lea edi, [esp + 0xab8c]
rep movsd dword es:[edi], dword [esi]
jmp 0x404e8a
mov dword [esp + 0xab68], edi
mov dword [esp + 0xabb0], edi
mov dword [esp + 0xab8c], edi
mov ecx, 9
lea esi, [esp + 0x198]
lea edi, [esp + 0xabd4]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x64]
mov dword [esp + 0x9f48], ecx
mov eax, dword [edx + 0x392c]
add eax, 0x30
mov byte [esp + 0x9f45], al
mov eax, dword [esp + 0x19e8]
mov ecx, eax
sar ecx, 0x1f
mov dword [esp + 0x9f4c], 0
mov dword [esp + 0x9f50], eax
test eax, eax
jne 0x404ef1
cmp dword [esp + 0x9f34], 0x80000000
ja 0x404ef1
cmp byte [edx + 0x3f4c], al
je 0x404f05
mov eax, dword [esp + 0x9f2c]
or eax, 0x100
mov word [esp + 0x9f2c], ax
cmp word [esp + 0xa354], 0
jne 0x404f41
cmp byte [edx + 0x281c], 0
lea eax, [edx + 0x281c]
je 0x404f29
push eax
call fcn.004708b0
test al, al
je 0x404f41
mov eax, dword [ebx + 0x28]
add eax, 0x2c1c
cmp word [eax], 0
je 0x404f56
push eax
call fcn.004708e0
test al, al
jne 0x404f56
mov ecx, dword [esp + 0x9f2c]
or ecx, 0x200
mov word [esp + 0x9f2c], cx
lea ecx, [esp + 0x3724]
call fcn.0040c8a0
inc dword [esp + 0x24]
lea edx, [esp + 0x3724]
push edx
lea eax, [esp + 0x1c0]
lea esi, [ebx + 0x1ef8]
push eax
mov ecx, esi
mov dword [ebx + 0x2448], 0xffffffff
mov byte [esp + 0x9f40], 2
call fcn.0045dc60
xor edi, edi
cmp byte [esp + 0x44], 0
mov byte [ebx + 0x1f48], 1
mov dword [ebx + 0x2418], edi
mov dword [ebx + 0x241c], edi
jne 0x4053fa
mov ecx, dword [ebx + 0x28]
cmp byte [ecx + 0x3f4c], 0
jne 0x4053fa
mov ecx, esi
call fcn.0045dc00
test al, al
jne 0x4053fa
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x18]
push edx
mov edx, dword [esp + 0x44]
push eax
push ecx
push edx
mov ecx, 0x508304
call fcn.0042d180
mov eax, dword [esp + 0x5c]
sub dword [esp + 0xc624], eax
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x2c]
sbb dword [esp + 0xc628], ecx
push edx
lea ecx, [esp + 0xb0]
call fcn.004063f0
inc dword [esp + 0x3c]
cmp dword [esp + 0x90], edi
mov dword [eax + 0x2c], edi
jl 0x405554
jg 0x40503c
cmp dword [esp + 0x8c], edi
jbe 0x405554
mov esi, 4
mov dword [esp + 0x80], esi
mov dword [ebx + 0x1ee4], edi
mov byte [esp + 0x2ee68], 6
lea ecx, [esp + 0x1bc]
call fcn.004349a0
jmp 0x40486f
lea eax, [esp + 0xd234]
push eax
lea ecx, [esp + 0x170]
call fcn.00469260
mov byte [esp + 0x2ee68], 7
mov ecx, dword [ebx + 0x1ee0]
call fcn.0044f790
mov ecx, dword [esp + 0x90]
mov edx, dword [esp + 0x8c]
push 0
push ecx
push edx
lea ecx, [esp + 0xd240]
call fcn.00434ff0
lea ecx, [esp + 0xd234]
call fcn.0040fda0
mov al, byte [esp + 0x1611c]
cmp al, byte [esp + 0xc60c]
je 0x405125
mov eax, dword [esp + 0x139f0]
cmp eax, 0x74
je 0x40511c
cmp eax, 0x7a
jne 0x405175
lea ecx, [esp + 0x14744]
push ecx
push eax
lea ecx, [esp + 0x372c]
call fcn.0040c420
lea ecx, [esp + 0xd234]
call fcn.004347e0
mov ecx, dword [esp + 0x1610c]
sub ecx, eax
mov eax, dword [esp + 0x16110]
sbb eax, edx
push eax
push ecx
lea ecx, [esp + 0x372c]
push ecx
jmp 0x405169
lea ecx, [esp + 0x13a34]
jmp 0x4050e4
mov edx, dword [esp + 0x16108]
mov eax, dword [esp + 0x16104]
push 0
push edx
push eax
lea ecx, [esp + 0xd240]
call fcn.00434ff0
mov ecx, dword [esp + 0x1610c]
sub ecx, dword [esp + 0x16104]
mov edx, dword [esp + 0x16110]
sbb edx, dword [esp + 0x16108]
lea eax, [esp + 0x3724]
push edx
push ecx
push eax
lea ecx, [esp + 0xd240]
call fcn.00435430
mov byte [esp + 0x2ee68], 6
lea ecx, [esp + 0x16c]
call fcn.00469290
jmp 0x405568
inc dword [esp + 0x20]
call fcn.004717e0
jmp 0x405568
cmp byte [esp + 0x16115], 0
je 0x405210
cmp byte [esp + 0x15], 0
jne 0x405210
mov edx, dword [esp + 0x90]
mov eax, dword [esp + 0x8c]
push 0
lea ecx, [esp + 0x19178]
push ecx
push edx
push eax
lea ecx, [esp + 0xd244]
push ecx
mov ecx, ebx
call fcn.004024a0
mov edx, dword [esp + 0x98]
mov ecx, dword [ebx + 0x1ee0]
push edx
push 0
lea eax, [esp + 0x1917c]
push eax
push ecx
lea edx, [esp + 0x3734]
push edx
lea eax, [esp + 0xd248]
push eax
mov ecx, ebx
call fcn.00403460
call fcn.004717e0
jmp 0x405568
mov ecx, dword [ebx + 0x1ee0]
call fcn.0044f790
mov ecx, dword [esp + 0x90]
mov edx, dword [esp + 0x8c]
push 0
push ecx
push edx
lea ecx, [esp + 0xd240]
call fcn.00434ff0
lea ecx, [esp + 0xd234]
call fcn.0040fda0
mov eax, dword [esp + 0xab54]
test eax, eax
je 0x405264
push eax
call fcn.004b1201
add esp, 4
mov dword [esp + 0xab54], 0
xor eax, eax
mov dword [esp + 0xab58], eax
mov dword [esp + 0xab5c], eax
mov ecx, 0x33a
lea esi, [esp + 0x13a34]
lea edi, [esp + 0x9f24]
rep movsd dword es:[edi], dword [esi]
mov dword [esp + 0xab54], eax
mov ecx, dword [esp + 0x14668]
mov dword [esp + 0xab58], eax
mov dword [esp + 0xab5c], eax
mov dword [esp + 0xab58], eax
mov dword [esp + 0xab5c], eax
mov dword [esp + 0xab58], ecx
cmp ecx, eax
jbe 0x4052ff
mov esi, ecx
cmp ecx, 0x20
ja 0x4052ca
mov esi, 0x20
push esi
push 0
call fcn.004b128f
add esp, 8
mov dword [esp + 0xab54], eax
test eax, eax
jne 0x4052f1
mov ecx, 0x508304
call fcn.0042cdb0
mov eax, dword [esp + 0xab54]
mov ecx, dword [esp + 0x14668]
mov dword [esp + 0xab5c], esi
test ecx, ecx
je 0x405315
push ecx
mov ecx, dword [esp + 0x14668]
push ecx
push eax
call fcn.004b1530
add esp, 0xc
mov edx, dword [esp + 0x9f2c]
mov eax, dword [esp + 0x98]
and edx, 0xfffffff7
mov word [esp + 0x9f2c], dx
test eax, eax
je 0x405342
push eax
lea eax, [esp + 0x9f28]
push eax
mov ecx, ebx
call fcn.004018c0
lea ecx, [esp + 0xd234]
call fcn.0040f900
test al, al
jne 0x40536d
lea ecx, [esp + 0xd234]
call fcn.0040f920
test al, al
jne 0x40536d
mov cl, byte [esp + 0x16115]
mov byte [esp + 0x17], cl
cmp byte [esp + 0x17], 0
je 0x4053c0
mov esi, dword [ebx + 0x28]
mov eax, dword [esi + 0xc]
movzx edx, word [esp + 0x9f2c]
push eax
mov ecx, ebx
call fcn.00401110
mov ecx, edx
and ecx, 0xe0
cmp eax, ecx
jbe 0x4053c0
and edx, 0xffffff1f
mov word [esp + 0x9f2c], dx
mov edx, dword [esi + 0xc]
push edx
mov ecx, ebx
call fcn.00401110
mov ecx, dword [esp + 0x9f2c]
or eax, ecx
mov word [esp + 0x9f2c], ax
lea ecx, [esp + 0x3724]
call fcn.0040c8a0
push 0
push 0x74
lea ecx, [esp + 0x372c]
call fcn.0040c420
lea edx, [esp + 0xd234]
push edx
lea ecx, [esp + 0x3728]
call fcn.0040b620
call fcn.004717e0
jmp 0x405568
test byte [esp + 0x94], 1
jne 0x405414
mov eax, dword [ebx + 0x28]
mov byte [esp + 0x13], 0
cmp dword [eax + 0x392c], edi
jne 0x405419
mov byte [esp + 0x13], 1
mov ecx, dword [esp + 0x9f48]
push ecx
call fcn.00435af0
test al, al
je 0x40543f
mov edx, dword [esp + 0x9f2c]
or edx, 0xe0
mov word [esp + 0x9f2c], dx
cmp byte [esp + 0x44], 0
jne 0x40544d
cmp byte [esp + 0x13], 0
je 0x405470
mov eax, dword [ebx + 0x28]
mov byte [esp + 0x9f45], 0x30
cmp byte [eax + 0x351c], 0
jne 0x405469
mov byte [esp + 0x9f44], 0x14
cmp byte [esp + 0x13], 0
jne 0x4054a3
mov ecx, dword [ebx + 0x1ee0]
add ecx, 0x1b6b4
call fcn.0041afe0
xor ecx, ecx
add eax, dword [esp + 0xac04]
adc ecx, dword [esp + 0xac08]
mov dword [esp + 0xa0], ecx
js 0x4054ae
jg 0x4054a3
cmp eax, 0x8000
jbe 0x4054ae
mov ecx, dword [ebx + 0x1ee0]
call fcn.0044f790
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x38]
push edx
mov edx, dword [ebx + 0x1ee0]
push 1
push eax
push ecx
push edx
lea eax, [esp + 0x1d0]
push eax
mov ecx, ebx
call fcn.00403260
cmp byte [esp + 0x44], 0
jne 0x405537
cmp byte [esp + 0x13], 0
je 0x405501
push edi
mov ecx, ebx
call fcn.00403320
push esi
call fcn.00402280
push edi
mov ecx, ebx
call fcn.00402c30
mov dword [ebx + 8], edi
mov dword [ebx + 4], edi
jmp 0x405537
mov eax, dword [ebx + 0x28]
mov edx, dword [eax + 0x392c]
lea ecx, [eax + 0x3a74]
movzx eax, byte [ebx + 0x1ef4]
push ecx
mov ecx, dword [ebx + 0x1ee0]
dec edx
push edx
push eax
call fcn.004534c0
cmp byte [esp + 0xc605], 0
je 0x405541
mov byte [ebx + 0x1ef4], 1
cmp byte [esp + 0xc605], 0
jne 0x40554c
mov ecx, dword [ebx + 0x1ee0]
call fcn.0044f790
call fcn.004717e0
mov dword [ebx + 0x20], edi
mov byte [esp + 0x2ee68], 6
lea ecx, [esp + 0x1bc]
call fcn.004349a0
mov eax, dword [esp + 0x2c]
inc eax
mov dword [esp + 0x2c], eax
cmp eax, dword [esp + 0x160]
jb 0x404832
mov ecx, dword [ebx + 0x1ee0]
call fcn.0044f790
cmp dword [esp + 0x3c], 0
mov ecx, dword [ebx + 0x28]
mov dword [ecx + 0x5360], 0
jle 0x4055a9
push 6
mov ecx, 0x508304
call fcn.0042cc20
cmp dword [esp + 0x24], 0
jne 0x405638
cmp dword [esp + 0x20], 0
jne 0x405638
push 0xa
mov ecx, 0x508304
call fcn.0042cc20
lea ecx, [esp + 0x3724]
call fcn.004346c0
mov byte [esp + 0x2ee68], 3
lea ecx, [esp + 0x19174]
call fcn.0047c720
mov byte [esp + 0x2ee68], 2
lea ecx, [esp + 0x3724]
call fcn.0040bd50
mov byte [esp + 0x2ee68], 1
lea ecx, [esp + 0xd234]
call fcn.0040bd50
mov byte [esp + 0x2ee68], 9
mov eax, dword [esp + 0x154]
test eax, eax
je 0x40562b
push eax
call fcn.004b1201
add esp, 4
mov byte [esp + 0x2ee68], 0xb
jmp 0x405d94
cmp byte [esp + 0x14], 0
lea ecx, [esp + 0x3724]
je 0x405655
lea edx, [esp + 0xd234]
push edx
call fcn.0040ec50
jmp 0x405665
mov eax, dword [esp + 0x48]
push 0
push 0
push 0
push eax
call fcn.0040f380
mov byte [esp + 0x2ee68], 3
lea ecx, [esp + 0x19174]
call fcn.0047c720
lea ecx, [esp + 0x3b42]
push ecx
lea edx, [esp + 0x3745]
push edx
push 0
mov ecx, 0x508310
call fcn.0041d6b0
mov eax, dword [ebx + 0x28]
lea esi, [eax + 0x3b34]
mov al, byte [esi]
test al, al
je 0x4056ce
xor ecx, ecx
cmp al, 0x40
sete cl
lea edx, [esp + 0x3741]
dec ecx
and ecx, esi
mov eax, ecx
push eax
push edx
call fcn.00471a20
test al, al
jne 0x4056ce
push 2
mov ecx, 0x508304
call fcn.0042d410
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x3944], 0
je 0x40580b
push 0x33e
call fcn.004671c0
push eax
call fcn.0048d240
call fcn.0048d8e0
cmp dword [esp + 0x160], 0
mov dword [esp + 0x20], 0
jbe 0x40580b
lea esp, [esp]
mov ecx, dword [esp + 0x20]
push ecx
lea ecx, [esp + 0xb0]
call fcn.004063f0
mov esi, eax
mov ecx, 0x12
lea edi, [esp + 0x54]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0x80]
cmp eax, 2
je 0x405743
cmp eax, 3
jne 0x4057f5
lea ecx, [esp + 0x19f8]
call fcn.004129c0
lea ecx, [esp + 0x1a1c]
call fcn.004129c0
lea ecx, [esp + 0x1a40]
call fcn.004129c0
mov edi, dword [esp + 0x58]
mov esi, dword [esp + 0x54]
push 0
lea edx, [esp + 0xde8]
push edx
push edi
push esi
call fcn.0043b280
test al, al
je 0x4057f5
lea ecx, [esp + 0x19f8]
call fcn.00473c80
cmp eax, dword [esp + 0x6c]
jne 0x4057f5
cmp edx, dword [esp + 0x70]
jne 0x4057f5
mov eax, dword [esp + 0x19e4]
cmp eax, dword [esp + 0x5c]
jne 0x4057f5
mov ecx, dword [esp + 0x19e8]
cmp ecx, dword [esp + 0x60]
jne 0x4057f5
mov edx, dword [esp + 0x64]
and edx, 0xffffffdf
push edx
push edi
push esi
call fcn.00435b70
test al, al
jne 0x4057e8
push esi
call fcn.00470bb0
push eax
push 0x4bf
call fcn.004671c0
push eax
mov eax, dword [esp + 0x20]
push eax
call fcn.0049ac10
add esp, 0xc
push 0
push esi
call fcn.0048d330
call fcn.0048d8e0
mov eax, dword [esp + 0x20]
inc eax
mov dword [esp + 0x20], eax
cmp eax, dword [esp + 0x160]
jb 0x405710
cmp byte [esp + 0xc631], 0
lea esi, [esp + 0xc631]
jne 0x405823
lea esi, [esp + 0x3741]
cmp word [esp + 0xca32], 0
mov dword [esp + 0x18], esi
lea edx, [esp + 0xca32]
jne 0x405840
lea edx, [esp + 0x3b42]
mov eax, dword [ebx + 0x28]
mov dword [esp + 0x24], edx
add eax, 0x5fc2
lea esp, [esp]
mov cl, byte [esi]
mov byte [eax], cl
inc esi
inc eax
test cl, cl
jne 0x405850
mov eax, dword [ebx + 0x28]
add eax, 0x63c2
movzx ecx, word [edx]
mov word [eax], cx
add edx, 2
add eax, 2
test cx, cx
jne 0x405862
mov ecx, dword [ebx + 0x28]
cmp byte [ecx + 0x3a72], 0
je 0x405a45
mov esi, dword [ebx + 0x1ee0]
test esi, esi
je 0x40589d
mov ecx, esi
call fcn.0044f3d0
push esi
call fcn.004b0b19
add esp, 4
lea ecx, [esp + 0x27674]
mov dword [ebx + 0x1ee0], 0
call fcn.0041ff60
mov byte [esp + 0x2ee68], 0xd
mov eax, dword [ebx + 0x28]
mov byte [esp + 0x2b0e6], 1
mov dword [esp + 0x2b5a8], 1
movzx edx, byte [eax + 0x3938]
mov byte [esp + 0x2afac], dl
movzx ecx, byte [eax + 0x3947]
mov byte [esp + 0x2afbb], cl
movzx edx, byte [eax + 0x3971]
mov byte [esp + 0x2afe5], dl
movzx ecx, byte [eax + 0x3989]
mov byte [esp + 0x2affd], cl
mov edx, 0x54
lea esi, [eax + 0x341c]
mov eax, dword [esp + 0x24]
mov word [esp + 0x2ca06], dx
mov ecx, 0x40
lea edi, [esp + 0x2aa90]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x18]
push eax
push ecx
movsw word es:[edi], word [esi]
call fcn.00435a70
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x24]
test al, al
jne 0x40598a
jmp 0x405950
mov edx, dword [ebx + 0x28]
cmp byte [edx + 0x3b34], 0x2e
je 0x405a31
push esi
push edi
call fcn.0047fe60
test al, al
sete al
mov byte [esp + 0x14], al
cmp al, 1
je 0x40597f
push esi
push edi
call fcn.00435a70
test al, al
je 0x405950
cmp byte [esp + 0x14], 0
jne 0x405a31
call fcn.0048d6a0
push esi
push edi
lea ecx, [esp + 0x2767c]
call fcn.0041d4b0
mov ecx, dword [esp + 0x2e238]
push 0x4c77ac
call fcn.00471160
mov esi, dword [0x508308]
lea eax, [esp + 0x27674]
push eax
lea ecx, [ebx + 0x30]
call fcn.00433b60
cmp esi, dword [0x508308]
je 0x405a31
mov byte [esp + 0x2ee68], 3
lea ecx, [esp + 0x27674]
call fcn.0041fc20
mov byte [esp + 0x2ee68], 2
lea ecx, [esp + 0x3724]
call fcn.0040bd50
mov byte [esp + 0x2ee68], 1
lea ecx, [esp + 0xd234]
call fcn.0040bd50
mov byte [esp + 0x2ee68], 0xe
mov eax, dword [esp + 0x154]
test eax, eax
je 0x405a24
push eax
call fcn.004b1201
add esp, 4
mov byte [esp + 0x2ee68], 0x10
jmp 0x405d94
mov byte [esp + 0x2ee68], 3
lea ecx, [esp + 0x27674]
call fcn.0041fc20
mov ecx, dword [ebp + 0x14]
cmp byte [ecx], 0x4d
je 0x405a5d
mov edx, dword [ebx + 0x28]
cmp byte [edx + 0x398a], 0
je 0x405cea
push 0x33f
call fcn.004671c0
push eax
call fcn.0048d240
push 1
push 0
lea ecx, [esp + 0xb4]
call fcn.00406be0
mov esi, dword [esp + 0x160]
or edi, 0xffffffff
lea ecx, [esp + 0x9c]
dec esi
mov dword [esp + 0x20], edi
mov dword [esp + 0x48], edi
call fcn.00437350
mov byte [esp + 0x2ee68], 0x12
mov ecx, dword [ebx + 0x28]
cmp byte [ecx + 0x398d], 0
mov byte [esp + 0x14], 0
je 0x405af4
call fcn.0041db80
test al, al
jne 0x405af4
cmp dword [esp + 0x3c], 0
jne 0x405af4
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x3948], 0
jne 0x405af4
cmp byte [eax + 0x3949], 0
jne 0x405af4
mov edi, dword [esp + 0x160]
mov byte [esp + 0x14], 1
xor esi, esi
mov dword [esp + 0x20], edi
mov dword [esp + 0x48], 1
mov dword [esp + 0x18], esi
cmp esi, edi
je 0x405cd6
test byte [esp + 0x18], 0xf
jne 0x405b0c
call fcn.004717e0
mov eax, dword [esp + 0x18]
push eax
lea ecx, [esp + 0xb0]
call fcn.004063f0
mov esi, eax
mov ecx, 0x12
lea edi, [esp + 0x54]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0x80]
cmp eax, 2
je 0x405b3f
cmp eax, 3
jne 0x405cc0
mov ecx, dword [esp + 0x64]
push ecx
call fcn.00435b20
test al, al
jne 0x405cc0
mov edx, dword [ebx + 0x28]
mov edi, dword [esp + 0x58]
mov esi, dword [esp + 0x54]
cmp byte [edx + 0x398d], al
jne 0x405b79
mov eax, dword [esp + 0x64]
push eax
call fcn.00435b30
test al, al
jne 0x405b79
push edi
push esi
call fcn.004368b0
mov ecx, dword [ebp + 0x14]
cmp byte [ecx + 1], 0x46
mov edx, dword [esp + 0x64]
push edx
setne byte [esp + 0x19]
call fcn.00435af0
test al, al
je 0x405c31
cmp byte [esp + 0x15], 0
je 0x405cc0
mov eax, dword [ebx + 0x28]
mov cl, byte [eax + 0x398d]
test cl, cl
je 0x405be9
cmp byte [esp + 0x14], 0
je 0x405be9
push edi
push esi
call fcn.00435a70
test al, al
je 0x405cc0
push edi
push esi
lea ecx, [esp + 0xa4]
call fcn.00437400
lea ecx, [esp + 0x9c]
call fcn.00436c90
mov byte [esp + 0x13], 1
jmp 0x405c7e
cmp byte [eax + 0x398c], 0
je 0x405c18
push edi
push esi
call fcn.00435f30
test al, al
je 0x405c06
push edi
push esi
call fcn.00436fd0
jmp 0x405c7a
push 0x91
mov byte [esp + 0x17], 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
jmp 0x405c7e
test cl, cl
je 0x405c28
lea ecx, [esp + 0x9c]
call fcn.00436c90
push edi
push esi
call fcn.00435e20
jmp 0x405c7a
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x398d], 0
push edi
push esi
je 0x405c65
call fcn.00435a70
test al, al
je 0x405cc0
push edi
push esi
lea ecx, [esp + 0xa4]
call fcn.00437400
push 0
push esi
call fcn.0048d330
call fcn.0048d8e0
jmp 0x405cc0
cmp byte [eax + 0x398c], 0
je 0x405c75
call fcn.00436dc0
jmp 0x405c7a
call fcn.00435dc0
mov byte [esp + 0x13], al
cmp byte [esp + 0x13], 0
je 0x405c94
push 0
push esi
call fcn.0048d330
call fcn.0048d8e0
jmp 0x405cc0
push esi
call fcn.00470bb0
push eax
push 0x202
call fcn.004671c0
push eax
lea eax, [esp + 0x3b4a]
push eax
call fcn.0049ac10
add esp, 0xc
mov ecx, 0x508304
call fcn.0042cce0
mov eax, dword [esp + 0x18]
add eax, dword [esp + 0x48]
mov dword [esp + 0x18], eax
cmp eax, dword [esp + 0x20]
jne 0x405b00
mov byte [esp + 0x2ee68], 3
lea ecx, [esp + 0x9c]
call fcn.004373a0
test byte [esp + 0x9f10], 1
je 0x405d48
mov ecx, dword [ebx + 0x28]
cmp dword [ecx + 0x3934], 0
je 0x405d48
lea ecx, [esp + 0x1bc]
call fcn.00460220
mov byte [esp + 0x2ee68], 0x13
mov ecx, dword [ebx + 0x28]
lea edx, [esp + 0xca32]
push edx
lea eax, [esp + 0xc635]
push eax
push ecx
lea ecx, [esp + 0x1c8]
call fcn.0045e710
mov byte [esp + 0x2ee68], 3
lea ecx, [esp + 0x1bc]
call fcn.0045e680
mov byte [esp + 0x2ee68], 2
lea ecx, [esp + 0x3724]
call fcn.0040bd50
mov byte [esp + 0x2ee68], 1
lea ecx, [esp + 0xd234]
call fcn.0040bd50
mov byte [esp + 0x2ee68], 0x14
mov eax, dword [esp + 0x154]
test eax, eax
je 0x405d8c
push eax
call fcn.004b1201
add esp, 4
mov byte [esp + 0x2ee68], 0x16
mov eax, dword [esp + 0xbc]
test eax, eax
je 0x405da8
push eax
call fcn.004b1201
add esp, 4
mov byte [esp + 0x2ee68], 0
mov eax, dword [esp + 0xac]
test eax, eax
je 0x405dc4
push eax
call fcn.004b1201
add esp, 4
mov dword [esp + 0x2ee68], 0xffffffff
lea ecx, [esp + 0x16d44]
call fcn.00469c00
mov ecx, dword [esp + 0x2ee60]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2ee48]
xor ecx, esp
call fcn.004b102c
mov esp, ebp
pop ebp
ret 0x10