Function at 0x4039f0
Capabilities:
Check os version
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x44f7d2
mov eax, dword fs:[0]
push eax
push ecx
mov eax, 0x2bd74
call fcn.00443040
mov eax, dword [0x459800]
xor eax, esp
mov dword [esp + 0x2bd70], eax
push ebx
push esi
push edi
mov eax, dword [0x459800]
xor eax, esp
push eax
lea eax, [esp + 0x2bd88]
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 + 0x30], esi
mov dword [esp + 0x2c], edi
mov dword [esp + 0x3c], edx
mov dword [esp + 0x40], edx
mov dword [esp + 0x28], edx
cmp byte [eax + 0x3f4c], dl
je 0x403a6a
mov dword [eax + 0x3958], edx
mov dword [eax + 0x395c], edx
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x410], dl
je 0x403b16
push 0x452388
push esi
call fcn.00429350
test al, al
jne 0x403b14
push 0x452384
push esi
call fcn.00429350
test al, al
jne 0x403b14
push 0x452380
push esi
call fcn.00429350
test al, al
jne 0x403b08
mov eax, esi
dec eax
lea ecx, [ecx]
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x403ab0
mov ecx, dword [str..ext]
mov dword [eax], ecx
mov dl, byte [0x45237c]
mov byte [eax + 4], dl
test edi, edi
je 0x403b08
cmp word [edi], 0
je 0x403b08
mov eax, edi
add eax, 0xfffffffe
jmp 0x403ae0
mov cx, word [eax + 2]
add eax, 2
test cx, cx
jne 0x403ae0
mov ecx, dword [0x45236c]
mov dword [eax], ecx
mov edx, dword [0x452370]
mov dword [eax + 4], edx
mov cx, word [0x452374]
mov word [eax + 8], cx
push esi
call fcn.0042ae30
push edi
call fcn.0042ae50
xor edx, edx
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x398e], 0
je 0x403b37
mov edx, dword [ebp + 0x10]
push 1
add eax, 0x398f
push eax
push edx
push edi
push esi
call fcn.0042b360
xor edx, edx
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x398b], 0
je 0x403b4b
push esi
call fcn.0041f3c0
xor edx, edx
mov eax, dword [ebx + 0x28]
mov byte [esp + 0x2b17c], 0
mov ecx, dword [eax + 0x3930]
cmp ecx, edx
mov byte [esp + 0x2b57c], 0
jge 0x403b7a
mov edi, dword [eax + 0x3958]
or edi, dword [eax + 0x395c]
mov dword [esp + 0x48], ecx
jne 0x403b7e
mov dword [esp + 0x48], edx
mov ecx, dword [eax + 0x3958]
or ecx, dword [eax + 0x395c]
je 0x403b95
mov byte [ebx + 0x23d5], 1
jmp 0x403b9c
and dword [eax + 0x393c], 0xffffffe7
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x281c], 0
lea ecx, [eax + 0x281c]
jne 0x403bc4
add eax, 0x2c1c
cmp word [eax], dx
je 0x403bc4
push 0x400
push ecx
push eax
call fcn.00428eb0
cmp byte [0x463868], 0
jne 0x403be0
push 0xd36
call fcn.00433c40
push eax
call fcn.00414190
add esp, 4
mov eax, dword [ebx + 0x28]
movzx edx, byte [eax + 0x397d]
mov ecx, dword [eax + 0x3950]
push 1
push edx
mov edx, dword [eax + 0x5b94]
push ecx
push edx
lea ecx, [esp + 0x14cb4]
call fcn.00435d60
lea edx, [esp + 0x16ccc]
mov dword [esp + 0x2bd90], 0
mov eax, esi
sub edx, esi
lea ecx, [ecx]
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x403c20
mov eax, dword [ebx + 0x28]
lea ecx, [esp + 0x19e8]
mov dword [esp + 0x170cc], eax
call fcn.00439e90
lea ecx, [esp + 0x1a0c]
call fcn.00439e90
lea ecx, [esp + 0x1a30]
call fcn.00439e90
mov ecx, dword [ebx + 0x28]
push ecx
lea ecx, [esp + 0xc8]
call fcn.004068f0
mov eax, dword [ebx + 0x28]
xor edi, edi
cmp byte [eax + 0x3f4c], 0
lea esi, [eax + 0x3f4c]
mov byte [esp + 0x2bd90], 1
mov dword [esp + 0x1c], edi
mov dword [esp + 0x20], edi
je 0x403d02
push 0x48
lea edx, [esp + 0x58]
push edi
push edx
call fcn.00443580
add esp, 0xc
lea ecx, [esp + 0x9c]
mov dword [esp + 0x54], esi
mov dword [esp + 0x80], 2
call fcn.00439e90
lea ecx, [esp + 0x9c]
call fcn.0043a190
lea ecx, [esp + 0x9c]
call fcn.00439c70
lea ecx, [esp + 0x9c]
mov dword [esp + 0x68], eax
call fcn.00439fa0
mov dword [esp + 0x6c], eax
lea eax, [esp + 0x54]
push eax
lea ecx, [esp + 0xc8]
mov dword [esp + 0x74], edx
call fcn.00406150
mov edi, 1
jmp 0x403eeb
lea ecx, [esp + 0xdd4]
push ecx
lea ecx, [esp + 0x14ca8]
call fcn.004368c0
test eax, eax
jne 0x403eeb
mov esi, dword [esp + 0x1c]
mov edx, dword [esp + 0x178]
mov ecx, dword [esp + 0x2c]
push edi
push edx
mov edx, dword [esp + 0x38]
lea eax, [esp + 0xddc]
push eax
push ecx
push edx
mov ecx, ebx
call fcn.00402070
test al, al
je 0x403ecb
push 0x48
lea eax, [esp + 0x58]
push 0
push eax
call fcn.00443580
add esp, 0xc
lea edx, [esp + 0x11d4]
lea ecx, [esp + 0xdd4]
push edx
mov dword [esp + 0x58], ecx
call fcn.00438ca0
mov edx, dword [esp + 0x19d4]
movzx eax, al
neg eax
sbb eax, eax
not eax
lea ecx, [esp + 0x11d4]
and eax, ecx
mov ecx, dword [esp + 0x19dc]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x19d8]
mov dword [esp + 0x5c], edx
mov edx, dword [esp + 0x19e0]
mov dword [esp + 0x64], ecx
lea ecx, [esp + 0x19e8]
mov dword [esp + 0x60], eax
mov dword [esp + 0x68], edx
call fcn.00439fa0
lea ecx, [esp + 0x1a30]
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], edx
call fcn.00439fa0
mov cx, word [esp + 0x16cc8]
mov dword [esp + 0x78], edx
mov dword [esp + 0x74], eax
mov ax, word [esp + 0x16cc4]
lea edx, [esp + 0xdd4]
mov word [esp + 0x7e], cx
mov ecx, dword [ebx + 0x28]
push edx
mov word [esp + 0x80], ax
mov dword [esp + 0x84], 2
call fcn.00410440
test al, al
je 0x403e23
or dword [esp + 0x94], 1
mov eax, dword [ebx + 0x28]
mov ecx, dword [eax + 0x5b98]
cmp dword [ecx + 0x20], 0
jbe 0x403e6d
lea edx, [esp + 0x1ac]
push edx
lea ecx, [esp + 0x2b980]
push ecx
lea edx, [esp + 0x5c]
push edx
push eax
call fcn.004014f0
mov eax, dword [esp + 0x19e4]
push 0
push 0
push eax
lea ecx, [esp + 0x2b988]
push ecx
mov ecx, dword [ebx + 0x28]
call fcn.00410b30
test al, al
jne 0x403ecb
lea edx, [esp + 0x54]
push edx
lea ecx, [esp + 0xc8]
call fcn.00406150
cmp byte [esp + 0x19e4], 0
jne 0x403ecb
mov eax, dword [ebx + 0x28]
inc edi
cmp dword [eax + 0x393c], 0
je 0x403eab
mov ecx, dword [esp + 0x19d4]
mov edx, dword [esp + 0x19d8]
add esi, ecx
adc dword [esp + 0x20], edx
jmp 0x403ecb
mov ecx, dword [esp + 0x19d8]
cmp dword [esp + 0x20], ecx
jg 0x403ecb
mov eax, dword [esp + 0x19d4]
jl 0x403ec5
cmp esi, eax
ja 0x403ecb
mov esi, eax
mov dword [esp + 0x20], ecx
lea eax, [esp + 0xdd4]
push eax
lea ecx, [esp + 0x14ca8]
call fcn.004368c0
test eax, eax
je 0x403d22
mov dword [esp + 0x1c], esi
mov ecx, dword [esp + 0x178]
mov esi, dword [esp + 0x30]
push edi
push ecx
push 0
push 0
push 0
mov ecx, ebx
call fcn.00402070
cmp dword [esp + 0x154bc], 0
je 0x403f49
mov edx, dword [ebx + 0x28]
cmp byte [edx + 0x3a0f], 0
je 0x403f3d
push 0xe3c
call fcn.00433c40
push eax
push esi
call fcn.004149c0
add esp, 8
push 6
mov ecx, 0x463e7c
call fcn.00418ac0
jmp 0x403f49
push 6
mov ecx, 0x463e7c
call fcn.00418560
lea ecx, [esp + 0xc4]
call fcn.00406930
lea ecx, [esp + 0x188]
call fcn.00439e90
lea ecx, [esp + 0x188]
call fcn.0043a190
mov eax, dword [ebx + 0x28]
push eax
lea ecx, [esp + 0xc1e0]
call fcn.0040a750
mov ecx, dword [ebx + 0x28]
push ecx
lea ecx, [esp + 0x3718]
mov byte [esp + 0x2bd94], 2
call fcn.0040a750
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x351e], 0
mov byte [esp + 0x2bd90], 3
je 0x403fba
cmp byte [eax + 0x351c], 0
mov byte [esp + 0xb5b4], 1
jne 0x403fc2
mov byte [esp + 0xb5b4], 0
mov edx, dword [eax + 0x3f48]
mov ecx, dword [eax + 0x3f44]
push edx
mov edx, dword [eax + 0x3f40]
mov eax, dword [eax + 0x3f3c]
push ecx
push edx
push eax
lea ecx, [esp + 0x3724]
call fcn.00406f30
mov ecx, dword [ebx + 0x28]
movzx edx, byte [ecx + 0x3989]
mov edi, dword [esp + 0x2c]
neg edx
sbb edx, edx
and edx, 3
inc edx
push edx
push edi
push esi
lea ecx, [esp + 0xc1e8]
call fcn.0041cfe0
test al, al
je 0x404124
mov eax, dword [ebx + 0x28]
mov ecx, dword [eax + 0x3958]
or ecx, dword [eax + 0x395c]
jne 0x404039
cmp byte [esp + 0x14075], cl
jne 0x40408f
cmp dword [eax + 0x393c], ecx
je 0x40408f
lea ecx, [esp + 0xc1dc]
call fcn.0041cef0
cmp eax, 0x14
jne 0x40406a
test edx, edx
jne 0x40406a
lea ecx, [esp + 0xc1dc]
call fcn.0041ccd0
mov dword [esp + 0xcdfc], 1
jmp 0x404132
mov eax, dword [ebx + 0x28]
mov edx, dword [eax + 0x3958]
or edx, dword [eax + 0x395c]
je 0x40408f
xor ecx, ecx
mov dword [eax + 0x3958], ecx
mov dword [eax + 0x395c], ecx
mov byte [ebx + 0x23d5], cl
push 0
lea ecx, [esp + 0xc1e0]
call fcn.004090f0
lea ecx, [esp + 0xc1dc]
call fcn.00406c70
test al, al
jne 0x4040b9
push edi
push esi
mov ecx, 0x463e7c
call fcn.00418c50
lea ecx, [esp + 0xc1dc]
call fcn.00409660
push 0
lea ecx, [esp + 0xc1e0]
call fcn.00406ae0
test al, al
je 0x4040e3
push 4
mov ecx, 0x463e7c
call fcn.00418ac0
lea ecx, [esp + 0xc1dc]
call fcn.00406b80
test al, al
je 0x4040ff
push 3
mov ecx, 0x463e7c
call fcn.00418ac0
mov al, byte [esp + 0x14075]
mov byte [esp + 0xb5ad], al
test al, al
je 0x404235
push 0xd3c
call fcn.00433c40
jmp 0x40423a
cmp dword [esp + 0xcdfc], 1
jne 0x40421a
push 1
push edi
push esi
lea ecx, [esp + 0x3720]
mov byte [esp + 0xb5e4], 1
call fcn.0041d640
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x410], 0
je 0x4041bf
lea ecx, [esp + 0x1ac]
call fcn.0041cba0
mov eax, dword [ebx + 0x28]
lea ecx, [eax + 0x810]
push ecx
add eax, 0x410
push eax
lea ecx, [esp + 0x1b4]
mov byte [esp + 0x2bd98], 4
call fcn.0041d600
push 0x7fffffff
push 0x7fffffff
lea edx, [esp + 0x371c]
push edx
lea ecx, [esp + 0x1b8]
call fcn.0041db30
lea ecx, [esp + 0x1ac]
mov dword [esp + 0xb5b8], eax
mov byte [esp + 0x2bd90], 3
call fcn.0041cfb0
mov eax, dword [ebx + 0x28]
cmp dword [eax + 0x393c], 0
je 0x4041ef
cmp dword [eax + 0x392c], 0
je 0x4041ef
push 0xd3c
mov byte [esp + 0xb5b1], 1
call fcn.00433c40
push esi
push eax
push 0xd38
jmp 0x404241
cmp byte [esp + 0xb5ad], 0
je 0x40420c
push 0xd3c
call fcn.00433c40
push esi
push eax
push 0xd38
jmp 0x404241
push esi
mov eax, 0x45236b
push eax
push 0xd38
jmp 0x404241
push 0
push esi
mov ecx, 0x463e7c
call fcn.00418c10
push 9
mov ecx, 0x463e7c
call fcn.00418ac0
jmp 0x40424f
mov eax, 0x45236b
push esi
push eax
push 0xd3a
call fcn.00433c40
push eax
call fcn.00414190
add esp, 0xc
mov eax, dword [ebx + 0x28]
mov ecx, dword [eax + 0x3958]
mov eax, dword [eax + 0x395c]
mov edx, ecx
or edx, eax
je 0x404273
push eax
push ecx
lea eax, [esp + 0x371c]
push eax
call fcn.00441fa0
cmp dword [esp + 0xc1e0], 0xffffffff
mov byte [esp + 0x17], 0
setne al
mov byte [esp + 0x19], al
test al, al
je 0x40434d
cmp dword [esp + 0x178], 0
jne 0x4042a9
mov ecx, dword [ebx + 0x28]
cmp byte [ecx + 0x3a0f], 0
je 0x404365
lea ecx, [esp + 0x3714]
call fcn.00406bc0
push 0
push 1
lea edx, [esp + 0xc1e4]
push edx
lea ecx, [esp + 0x3720]
call fcn.0040ac50
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x1b]
push ecx
lea edx, [esp + 0xcc]
push edx
lea eax, [esp + 0xc1e8]
push eax
mov ecx, ebx
call fcn.004025c0
cmp byte [esp + 0x18], 0
je 0x404365
xor esi, esi
cmp dword [esp + 0x178], esi
jbe 0x40431f
lea edi, [esi + 4]
push esi
lea ecx, [esp + 0xc8]
call fcn.00406200
cmp dword [eax + 0x2c], edi
jne 0x404365
inc esi
cmp esi, dword [esp + 0x178]
jb 0x404303
mov ecx, dword [ebx + 0x28]
cmp dword [ecx + 0x3974], 0
jne 0x404365
push 0xa
mov ecx, 0x463e7c
call fcn.00418560
lea ecx, [esp + 0x3714]
call fcn.0041ccd0
push 0xd5a
jmp 0x405b37
push 0
push 0
lea edx, [esp + 0xc1e4]
push edx
lea ecx, [esp + 0x3720]
call fcn.0040ac50
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x3f4c], 0
jne 0x4043e3
cmp byte [esp + 0x19], 0
je 0x404382
cmp byte [esp + 0x14075], 0
jne 0x4043e3
mov ecx, dword [eax + 0x393c]
neg ecx
sbb ecx, ecx
and ecx, 0xe0000
add ecx, 0x20000
cmp dword [eax + 0xc], ecx
jbe 0x4043e3
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
push 0
push 2
push edx
push eax
call fcn.00443830
mov edi, eax
mov ecx, dword [ebx + 0x28]
mov eax, dword [ecx + 0xc]
xor esi, esi
cmp esi, edx
jl 0x4043e3
jg 0x4043c4
cmp eax, edi
jbe 0x4043e3
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 0x4043b2
xor edi, edi
xor esi, esi
cmp dword [esp + 0x178], edi
jbe 0x4044bc
mov ecx, dword [ebx + 0x28]
cmp byte [ecx + 0x3948], 0
je 0x404413
push esi
lea ecx, [esp + 0xc8]
call fcn.00406200
cmp dword [eax + 0x2c], 2
je 0x404426
push esi
lea ecx, [esp + 0xc8]
call fcn.00406200
cmp dword [eax + 0x2c], 1
jne 0x404436
push esi
lea ecx, [esp + 0xc8]
call fcn.00406200
mov dword [eax + 0x2c], edi
push esi
lea ecx, [esp + 0xc8]
call fcn.00406200
cmp dword [eax + 0x2c], 2
je 0x40445c
push esi
lea ecx, [esp + 0xc8]
call fcn.00406200
cmp dword [eax + 0x2c], 3
jne 0x4044ae
push esi
lea ecx, [esp + 0xc8]
call fcn.00406200
mov edx, dword [eax + 8]
add dword [esp + 0xb5cc], edx
mov eax, dword [eax + 0xc]
push esi
adc dword [esp + 0xb5d4], eax
lea ecx, [esp + 0xc8]
call fcn.00406200
mov eax, dword [eax]
lea edx, [eax + 1]
nop
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x404490
mov ecx, dword [esp + 0xb5d4]
sub eax, edx
lea edx, [eax + ecx]
lea eax, [edx + eax*2 + 0x20]
mov dword [esp + 0xb5d4], eax
inc esi
cmp esi, dword [esp + 0x178]
jb 0x4043f4
cmp byte [esp + 0xb5ad], 0
je 0x4044d6
mov ecx, dword [ebx + 0x28]
cmp byte [ecx + 0x3972], 0
jne 0x4044d6
mov al, 1
jmp 0x4044d8
xor al, al
push edi
push eax
lea ecx, [esp + 0xcc]
call fcn.00406980
mov esi, dword [ebx + 0x1ec8]
cmp esi, edi
je 0x404500
mov ecx, esi
call fcn.00424a90
push esi
call fcn.00442989
add esp, 4
push 0x1b8a0
call fcn.004437c0
add esp, 4
mov dword [esp + 0x1c], eax
mov byte [esp + 0x2bd90], 5
cmp eax, edi
je 0x404534
mov ecx, dword [ebx + 0x28]
lea edx, [ebx + 0x1ee0]
push edx
mov edx, dword [ecx + 0xc]
push edx
mov ecx, eax
call fcn.00426250
jmp 0x404536
xor eax, eax
mov ecx, dword [ebx + 0x28]
mov dword [ebx + 0x1ec8], eax
mov edx, dword [ecx + 0x434c]
push edx
mov ecx, eax
mov byte [esp + 0x2bd94], 3
call fcn.00424be0
mov ecx, dword [ebx + 0x1ec8]
call fcn.00427a60
mov eax, dword [ebx + 0x1ec8]
mov dword [eax + 0x1b87c], ebx
lea eax, [ebx + 0x1ee0]
push eax
lea ecx, [esp + 0x170d8]
call fcn.0043e870
cmp byte [esp + 0x14075], 0
lea eax, [esp + 0xc1dc]
lea ecx, [esp + 0x3714]
mov byte [esp + 0x2bd90], 6
mov dword [ebx + 0x20], edi
mov dword [ebx + 0x24], ebx
mov dword [ebx + 4], edi
mov dword [ebx + 8], edi
mov dword [ebx + 0x18], eax
mov dword [ebx + 0x1c], ecx
mov byte [esp + 0x18], 0
mov byte [esp + 0x1a], 0
je 0x40461d
mov edx, dword [ebx + 0x28]
cmp byte [edx + 0x351c], 0
jne 0x4045ce
cmp byte [esp + 0x17], 0
je 0x4045ea
mov eax, dword [ebx + 0x1ed0]
add dword [esp + 0xb5cc], eax
mov ecx, dword [ebx + 0x1ed4]
adc dword [esp + 0xb5d0], ecx
jmp 0x4045ef
mov byte [esp + 0x18], 1
lea ecx, [esp + 0x170d4]
call fcn.0043fe10
movzx edx, word [esp + 0x11982]
mov eax, dword [esp + 0x14080]
push edi
lea ecx, [edx + eax + 7]
push edi
push ecx
lea ecx, [esp + 0xc1e8]
call fcn.0041d690
push 8
lea edx, [esp + 0x2b178]
push edx
call fcn.00414f90
mov dword [esp + 0x4c], edi
mov dword [esp + 0x50], edi
mov dword [esp + 0x44], edi
cmp dword [esp + 0x178], edi
jbe 0x4053c6
jmp 0x404650
mov eax, dword [esp + 0x44]
push eax
lea ecx, [esp + 0xc8]
call fcn.00406200
mov ecx, 0x12
mov esi, eax
lea edi, [esp + 0x54]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x80]
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x58]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x1c], edx
test esi, esi
je 0x4053b0
mov edi, edx
nop
cmp esi, 6
je 0x404e4d
cmp esi, 5
je 0x404f74
cmp esi, 4
je 0x404ffd
lea ecx, [esp + 0x2e88]
call fcn.00439e90
lea ecx, [esp + 0x2eac]
call fcn.00439e90
lea ecx, [esp + 0x2ed0]
call fcn.00439e90
lea ecx, [esp + 0x1ac]
call fcn.0041cba0
mov esi, dword [esp + 0x64]
push esi
mov byte [esp + 0x2bd94], 9
call fcn.0041dfb0
mov byte [esp + 0x17], al
test al, al
jne 0x40470f
push esi
call fcn.0041dfe0
test al, al
jne 0x40470f
push esi
call fcn.0041dfd0
test al, al
jne 0x40470f
mov byte [esp + 0x38], al
jmp 0x40472b
cmp byte [esp + 0x17], 0
mov byte [esp + 0x38], 1
je 0x40472b
mov eax, dword [ebx + 0x28]
cmp dword [eax + 0x394c], 1
je 0x40539c
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x3f4c], 0
jne 0x404775
movzx ecx, byte [eax + 0x397d]
mov esi, dword [esp + 0x34]
push ecx
lea edx, [esp + 0x2278]
push edx
push edi
push esi
call fcn.004203c0
cmp byte [esp + 0x17], 0
mov byte [esp + 0x16], al
je 0x40478c
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x74]
push eax
push ecx
lea ecx, [esp + 0x2ed8]
call fcn.00439fe0
jmp 0x40478c
push 1
lea ecx, [esp + 0x1b0]
mov byte [esp + 0x1a], 0
call fcn.0041cf70
mov esi, dword [esp + 0x34]
cmp byte [esp + 0x38], 0
jne 0x4048a4
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x3f4c], 0
jne 0x4048a4
cmp byte [esp + 0x16], 0
je 0x4047cb
movzx edx, byte [eax + 0x3989]
neg edx
sbb edx, edx
and edx, 4
push edx
push edi
push esi
lea ecx, [esp + 0x1b8]
call fcn.0041cfe0
cmp dword [esp + 0x1b0], 0xffffffff
jne 0x40487c
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
push edi
push esi
push eax
push ecx
mov ecx, 0x463e7c
call fcn.00418a30
mov edx, dword [esp + 0x5c]
sub dword [esp + 0xb5cc], edx
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x60]
sbb dword [esp + 0xb5d0], eax
push ecx
lea ecx, [esp + 0xc8]
call fcn.00406200
inc dword [esp + 0x3c]
cmp dword [esp + 0x90], 0
mov dword [eax + 0x2c], 0
jl 0x40539c
jg 0x40483f
cmp dword [esp + 0x8c], 0
jbe 0x40539c
cmp dword [esp + 0x98], 0
jne 0x40539c
mov esi, 4
lea ecx, [esp + 0x1ac]
mov dword [esp + 0x80], esi
mov dword [ebx + 0x1ecc], 0
mov byte [esp + 0x2bd90], 6
call fcn.0041cfb0
jmp 0x404690
cmp byte [esp + 0x16], 0
je 0x4048c2
mov edx, dword [esp + 0x2e80]
lea ecx, [esp + 0x2e88]
mov dword [esp + 0x68], edx
call fcn.00439fa0
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], edx
jmp 0x4048c2
mov eax, dword [esp + 0x64]
push eax
call fcn.0041dfd0
test al, al
jne 0x4048c2
xor eax, eax
mov dword [esp + 0x2e74], eax
mov dword [esp + 0x2e78], eax
push edi
push esi
push 1
mov ecx, 0x463e88
call fcn.004107b0
lea ecx, [esp + 0x92fc]
push ecx
mov ecx, dword [ebx + 0x28]
lea edx, [esp + 0x8f00]
push edx
lea eax, [esp + 0x5c]
push eax
push ecx
call fcn.004014f0
cmp byte [esp + 0x1a], 0
je 0x404961
lea ecx, [esp + 0xc1dc]
call fcn.0041cdf0
push 0
mov edi, edx
mov edx, dword [esp + 0x14084]
push 0
push edx
lea ecx, [esp + 0xc1e8]
mov esi, eax
call fcn.0041d690
push 0
lea eax, [esp + 0x170d8]
push eax
push edi
push esi
lea ecx, [esp + 0xc1ec]
push ecx
mov ecx, ebx
call fcn.004022a0
mov edx, dword [ebx + 0x28]
mov eax, dword [edx + 0x392c]
dec eax
push eax
lea ecx, [esp + 0x170d8]
push ecx
mov ecx, dword [ebx + 0x1ec8]
call fcn.00426bb0
mov esi, dword [esp + 0x34]
mov byte [ebx + 0x1edc], 1
cmp byte [esp + 0xb5ad], 0
mov byte [esp + 0x1a], 0
mov byte [esp + 0x18], 0
je 0x404a9e
mov eax, dword [ebx + 0x28]
mov ecx, dword [eax + 0x393c]
mov byte [esp + 0x1b], 0
test cl, 2
je 0x4049ae
mov esi, dword [eax + 0x3940]
test esi, esi
jle 0x4049ae
mov edi, dword [esp + 0x40]
test edi, edi
jle 0x4049b2
mov eax, edi
cdq
idiv esi
test edx, edx
jne 0x4049b2
mov byte [esp + 0x1b], 1
jmp 0x4049b2
mov edi, dword [esp + 0x40]
test cl, 4
je 0x404a04
lea edx, [esp + 0x8efc]
push edx
call fcn.004292f0
mov esi, eax
test esi, esi
je 0x4049fc
lea eax, [esp + 0x2b17c]
push eax
push esi
call fcn.00438ce0
test eax, eax
je 0x4049e1
mov byte [esp + 0x1b], 1
lea edx, [esp + 0x2b17c]
mov eax, esi
sub edx, esi
lea esp, [esp]
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x4049f0
jmp 0x404a04
mov byte [esp + 0x2b17c], 0
mov ecx, dword [ebx + 0x28]
mov edx, dword [ecx + 0x393c]
test dl, 8
jne 0x404a61
lea esi, [esp + 0x3731]
lea eax, [esp + 0x2b57c]
mov cl, byte [eax]
cmp cl, byte [esi]
jne 0x404a40
test cl, cl
je 0x404a3c
mov cl, byte [eax + 1]
cmp cl, byte [esi + 1]
jne 0x404a40
add eax, 2
add esi, 2
test cl, cl
jne 0x404a20
xor eax, eax
jmp 0x404a45
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x404a61
test dl, 0x10
jne 0x404a68
cmp dword [esp + 0x50], 0
jg 0x404a68
jl 0x404a61
cmp dword [esp + 0x4c], 0x400000
ja 0x404a68
cmp byte [esp + 0x1b], 0
je 0x404a8a
xor esi, esi
cmp edi, esi
jle 0x404a8a
mov ecx, dword [ebx + 0x1ec8]
call fcn.00424e30
mov byte [ebx + 0x1edc], 0
mov dword [esp + 0x4c], esi
mov dword [esp + 0x50], esi
jmp 0x404a9a
mov edx, dword [esp + 0x5c]
add dword [esp + 0x4c], edx
mov eax, dword [esp + 0x60]
adc dword [esp + 0x50], eax
mov esi, dword [esp + 0x34]
xor edi, edi
xor eax, eax
jmp 0x404ab0
mov cl, byte [esp + eax + 0x3731]
mov byte [esp + eax + 0x2b57c], cl
inc eax
test cl, cl
jne 0x404ab0
mov eax, dword [esp + 0x80]
cmp eax, 2
jne 0x404ad7
push esi
push 0xd3e
jmp 0x404ae2
cmp eax, 3
jne 0x404af0
push esi
push 0xd40
call fcn.00433c40
push eax
call fcn.00414190
add esp, 8
mov eax, dword [esp + 0x2e74]
mov ecx, dword [esp + 0x2e78]
mov dword [esp + 0x8edc], eax
mov dword [esp + 0x9bac], eax
mov eax, dword [ebx + 0x28]
xor edx, edx
mov dword [esp + 0x9bb0], ecx
mov dword [esp + 0x8ed0], 0x74
mov dword [esp + 0x8ee4], edi
mov dword [esp + 0x8ed8], edi
mov word [esp + 0x8ed4], dx
cmp byte [eax + 0x351c], dl
je 0x404b7e
cmp byte [esp + 0x17], dl
jne 0x404b7e
mov ecx, dword [esp + 0x64]
push ecx
call fcn.0041dfe0
test al, al
jne 0x404b7e
mov eax, dword [esp + 0x2b174]
mov ecx, dword [esp + 0x2b178]
mov edx, 0x404
or word [esp + 0x8ed4], dx
mov dword [esp + 0x9b08], eax
mov dword [esp + 0x9b0c], ecx
mov edx, dword [ebx + 0x28]
mov byte [esp + 0x8eec], 0x1d
mov eax, dword [edx + 0xc]
cmp eax, 0x80000
ja 0x404bbf
je 0x404bb8
cmp eax, 0x10000
je 0x404bd4
cmp eax, 0x20000
je 0x404bb1
cmp eax, 0x40000
jne 0x404bd4
mov eax, 0x40
jmp 0x404beb
mov eax, 0x20
jmp 0x404beb
mov eax, 0x60
jmp 0x404beb
cmp eax, 0x100000
je 0x404be6
cmp eax, 0x200000
je 0x404bdf
cmp eax, 0x400000
je 0x404bd8
xor eax, eax
jmp 0x404beb
mov eax, 0xc0
jmp 0x404beb
mov eax, 0xa0
jmp 0x404beb
mov eax, 0x80
mov cx, word [esp + 0x8ed4]
or cx, ax
cmp byte [ebx + 0x1edc], 0
je 0x404c03
or cx, 0x10
mov eax, 0x8000
or cx, ax
cmp byte [esp + 0x16], 0
mov word [esp + 0x8ed4], cx
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x8ee8], ecx
je 0x404c66
mov ecx, 9
lea esi, [esp + 0x2e88]
lea edi, [esp + 0x9b10]
rep movsd dword es:[edi], dword [esi]
mov ecx, 9
lea esi, [esp + 0x2ed0]
lea edi, [esp + 0x9b58]
rep movsd dword es:[edi], dword [esi]
mov ecx, 9
lea esi, [esp + 0x2eac]
lea edi, [esp + 0x9b34]
rep movsd dword es:[edi], dword [esi]
jmp 0x404c7b
mov dword [esp + 0x9b10], edi
mov dword [esp + 0x9b58], edi
mov dword [esp + 0x9b34], edi
mov eax, dword [esp + 0x64]
mov ecx, 9
lea esi, [esp + 0x188]
lea edi, [esp + 0x9b7c]
rep movsd dword es:[edi], dword [esi]
mov dword [esp + 0x8ef0], eax
mov cl, byte [edx + 0x392c]
mov eax, dword [esp + 0x2e78]
add cl, 0x30
mov byte [esp + 0x8eed], cl
mov ecx, eax
sar ecx, 0x1f
mov dword [esp + 0x8ef4], 0
mov dword [esp + 0x8ef8], eax
test eax, eax
jne 0x404ce2
cmp dword [esp + 0x8edc], 0x80000000
ja 0x404ce2
cmp byte [edx + 0x3f4c], al
je 0x404cef
mov eax, 0x100
or word [esp + 0x8ed4], ax
cmp word [esp + 0x92fc], 0
jne 0x404d2b
cmp byte [edx + 0x281c], 0
lea eax, [edx + 0x281c]
je 0x404d13
push eax
call fcn.00438c70
test al, al
je 0x404d2b
mov eax, dword [ebx + 0x28]
add eax, 0x2c1c
cmp word [eax], 0
je 0x404d38
push eax
call fcn.00438ca0
test al, al
jne 0x404d38
mov ecx, 0x200
or word [esp + 0x8ed4], cx
lea ecx, [esp + 0x3714]
call fcn.00408160
inc dword [esp + 0x40]
lea edx, [esp + 0x3714]
push edx
lea eax, [esp + 0x1b0]
lea esi, [ebx + 0x1ee0]
push eax
mov ecx, esi
mov dword [ebx + 0x2418], 0xffffffff
mov byte [esp + 0x8ee8], 2
call fcn.0042e970
xor edi, edi
cmp byte [esp + 0x38], 0
mov byte [ebx + 0x1f30], 1
mov dword [ebx + 0x23e8], edi
mov dword [ebx + 0x23ec], edi
jne 0x40521b
mov ecx, dword [ebx + 0x28]
cmp byte [ecx + 0x3f4c], 0
jne 0x40521b
mov ecx, esi
call fcn.0042e910
test al, al
jne 0x40521b
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x2c]
push edx
mov edx, dword [esp + 0x34]
push eax
push ecx
push edx
mov ecx, 0x463e7c
call fcn.00418a30
mov eax, dword [esp + 0x5c]
sub dword [esp + 0xb5cc], eax
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x44]
sbb dword [esp + 0xb5d0], ecx
push edx
lea ecx, [esp + 0xc8]
call fcn.00406200
inc dword [esp + 0x3c]
cmp dword [esp + 0x90], edi
mov dword [eax + 0x2c], edi
jl 0x40539c
jg 0x404e1e
cmp dword [esp + 0x8c], edi
jbe 0x40539c
mov esi, 4
lea ecx, [esp + 0x1ac]
mov dword [esp + 0x80], esi
mov dword [ebx + 0x1ecc], edi
mov byte [esp + 0x2bd90], 6
call fcn.0041cfb0
mov edi, dword [esp + 0x1c]
jmp 0x404690
lea eax, [esp + 0xc1dc]
push eax
lea ecx, [esp + 0xa0]
call fcn.00435d10
mov ecx, dword [ebx + 0x1ec8]
mov byte [esp + 0x2bd90], 7
call fcn.00424e30
mov ecx, dword [esp + 0x90]
mov edx, dword [esp + 0x8c]
push 0
push ecx
push edx
lea ecx, [esp + 0xc1e8]
call fcn.0041d690
lea ecx, [esp + 0xc1dc]
call fcn.0040b540
mov al, byte [esp + 0x1407c]
cmp al, byte [esp + 0xb5b4]
je 0x404f0b
mov eax, dword [esp + 0x11950]
cmp eax, 0x74
je 0x404f02
cmp eax, 0x7a
jne 0x404f5b
lea ecx, [esp + 0x126a4]
push ecx
push eax
lea ecx, [esp + 0x371c]
call fcn.00407cf0
lea ecx, [esp + 0xc1dc]
call fcn.0041cdf0
mov ecx, dword [esp + 0x1406c]
sub ecx, eax
mov eax, dword [esp + 0x14070]
sbb eax, edx
push eax
push ecx
lea ecx, [esp + 0x371c]
push ecx
jmp 0x404f4f
lea ecx, [esp + 0x11994]
jmp 0x404eca
mov edx, dword [esp + 0x14068]
mov eax, dword [esp + 0x14064]
push 0
push edx
push eax
lea ecx, [esp + 0xc1e8]
call fcn.0041d690
mov ecx, dword [esp + 0x1406c]
sub ecx, dword [esp + 0x14064]
mov edx, dword [esp + 0x14070]
sbb edx, dword [esp + 0x14068]
lea eax, [esp + 0x3714]
push edx
push ecx
push eax
lea ecx, [esp + 0xc1e8]
call fcn.0041db30
lea ecx, [esp + 0x9c]
mov byte [esp + 0x2bd90], 6
call fcn.00435d40
jmp 0x4053b0
lea ecx, [esp + 0xc1dc]
push ecx
lea ecx, [esp + 0xa0]
call fcn.00435d10
mov edx, dword [esp + 0x90]
mov eax, dword [esp + 0x8c]
push 0
push edx
push eax
lea ecx, [esp + 0xc1e8]
mov byte [esp + 0x2bd9c], 8
call fcn.0041d690
lea ecx, [esp + 0xc1dc]
call fcn.0040b540
lea ecx, [esp + 0x119c4]
push ecx
call fcn.00438fb0
push eax
push 0xda8
call fcn.00433c40
push eax
call fcn.00414190
inc dword [esp + 0x30]
add esp, 8
call fcn.00439570
lea ecx, [esp + 0x9c]
mov byte [esp + 0x2bd90], 6
call fcn.00435d40
jmp 0x4053b0
cmp byte [esp + 0x14075], 0
je 0x405071
cmp byte [esp + 0x18], 0
jne 0x405071
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x8c]
push 0
lea edx, [esp + 0x170d8]
push edx
push eax
push ecx
lea edx, [esp + 0xc1ec]
push edx
mov ecx, ebx
call fcn.004022a0
mov eax, dword [esp + 0x98]
mov edx, dword [ebx + 0x1ec8]
push eax
push 0
lea ecx, [esp + 0x170dc]
push ecx
push edx
lea eax, [esp + 0x3724]
push eax
lea ecx, [esp + 0xc1f0]
push ecx
mov ecx, ebx
call fcn.004031c0
call fcn.00439570
jmp 0x4053b0
mov ecx, dword [ebx + 0x1ec8]
call fcn.00424e30
mov edx, dword [esp + 0x90]
mov eax, dword [esp + 0x8c]
push 0
push edx
push eax
lea ecx, [esp + 0xc1e8]
call fcn.0041d690
lea ecx, [esp + 0xc1dc]
call fcn.0040b540
mov eax, dword [esp + 0x9afc]
test eax, eax
je 0x4050ba
push eax
call fcn.00442994
add esp, 4
mov ecx, 0x33a
lea esi, [esp + 0x11994]
lea edi, [esp + 0x8ecc]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x125c8]
xor eax, eax
mov dword [esp + 0x9afc], eax
mov dword [esp + 0x9b04], eax
mov dword [esp + 0x9b00], ecx
cmp ecx, eax
jbe 0x405132
mov esi, ecx
cmp ecx, 0x20
ja 0x4050fd
mov esi, 0x20
push esi
push 0
call fcn.00442a22
add esp, 8
mov dword [esp + 0x9afc], eax
test eax, eax
jne 0x405124
mov ecx, 0x463e7c
call fcn.00418ae0
mov eax, dword [esp + 0x9afc]
mov ecx, dword [esp + 0x125c8]
mov dword [esp + 0x9b04], esi
test ecx, ecx
je 0x405148
push ecx
mov ecx, dword [esp + 0x125c8]
push ecx
push eax
call fcn.00443210
add esp, 0xc
mov eax, dword [esp + 0x98]
mov edx, 0xfff7
and word [esp + 0x8ed4], dx
test eax, eax
je 0x405170
push eax
lea eax, [esp + 0x8ed0]
push eax
mov ecx, ebx
call fcn.004018b0
lea ecx, [esp + 0xc1dc]
call fcn.0040b100
test al, al
jne 0x40519b
lea ecx, [esp + 0xc1dc]
call fcn.0040b120
test al, al
jne 0x40519b
mov cl, byte [esp + 0x14075]
mov byte [esp + 0x1a], cl
cmp byte [esp + 0x1a], 0
je 0x4051e1
mov edx, dword [ebx + 0x28]
mov eax, dword [edx + 0xc]
push eax
mov ecx, ebx
call fcn.00401120
mov ecx, dword [esp + 0x8ed4]
and ecx, 0xe0
cmp eax, ecx
jbe 0x4051e1
mov eax, 0xff1f
and word [esp + 0x8ed4], ax
mov ecx, dword [edx + 0xc]
push ecx
mov ecx, ebx
call fcn.00401120
or word [esp + 0x8ed4], ax
lea ecx, [esp + 0x3714]
call fcn.00408160
push 0
push 0x74
lea ecx, [esp + 0x371c]
call fcn.00407cf0
lea edx, [esp + 0xc1dc]
push edx
lea ecx, [esp + 0x3718]
call fcn.00406c20
call fcn.00439570
jmp 0x4053b0
test byte [esp + 0x94], 1
jne 0x405235
mov eax, dword [ebx + 0x28]
mov byte [esp + 0x16], 0
cmp dword [eax + 0x392c], edi
jne 0x40523a
mov byte [esp + 0x16], 1
mov ecx, dword [esp + 0x8ef0]
push ecx
call fcn.0041dfb0
test al, al
je 0x405258
mov edx, pe_nt_image_headers32
or word [esp + 0x8ed4], dx
cmp byte [esp + 0x38], 0
jne 0x405266
cmp byte [esp + 0x16], 0
je 0x405289
mov eax, dword [ebx + 0x28]
mov byte [esp + 0x8eed], 0x30
cmp byte [eax + 0x351c], 0
jne 0x405282
mov byte [esp + 0x8eec], 0x14
cmp byte [esp + 0x16], 0
jne 0x4052bc
mov ecx, dword [ebx + 0x1ec8]
add ecx, 0x1b6b4
call fcn.0040ded0
xor ecx, ecx
add eax, dword [esp + 0x9bac]
adc ecx, dword [esp + 0x9bb0]
mov dword [esp + 0xa0], ecx
js 0x4052c7
jg 0x4052bc
cmp eax, 0x8000
jbe 0x4052c7
mov ecx, dword [ebx + 0x1ec8]
call fcn.00424e30
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x34]
push edx
mov edx, dword [ebx + 0x1ec8]
push 1
push eax
push ecx
push edx
lea eax, [esp + 0x1c0]
push eax
mov ecx, ebx
call fcn.00402fc0
cmp byte [esp + 0x38], 0
jne 0x405350
cmp byte [esp + 0x16], 0
je 0x40531a
push edi
mov ecx, ebx
call fcn.00403080
push esi
call fcn.00402150
push edi
mov ecx, ebx
call fcn.004029d0
mov dword [ebx + 8], edi
mov dword [ebx + 4], edi
jmp 0x405350
mov eax, dword [ebx + 0x28]
mov edx, dword [eax + 0x392c]
lea ecx, [eax + 0x3a74]
movzx eax, byte [ebx + 0x1edc]
push ecx
mov ecx, dword [ebx + 0x1ec8]
dec edx
push edx
push eax
call fcn.00428750
cmp byte [esp + 0xb5ad], 0
je 0x40535a
mov byte [ebx + 0x1edc], 1
cmp byte [esp + 0xb5ad], 0
jne 0x405365
mov ecx, dword [ebx + 0x1ec8]
call fcn.00424e30
call fcn.00439570
mov ecx, dword [ebx + 0x28]
cmp byte [ecx + 0x3938], 0
mov esi, 0x45236b
jne 0x405380
mov esi, 0x452364
push 0xd1a
call fcn.00433c40
push eax
push esi
push str._s_s
call fcn.00414190
add esp, 0xc
mov dword [ebx + 0x20], edi
lea ecx, [esp + 0x1ac]
mov byte [esp + 0x2bd90], 6
call fcn.0041cfb0
mov eax, dword [esp + 0x44]
inc eax
mov dword [esp + 0x44], eax
cmp eax, dword [esp + 0x178]
jb 0x404650
mov ecx, dword [ebx + 0x1ec8]
call fcn.00424e30
mov esi, dword [esp + 0x3c]
test esi, esi
jle 0x405410
push 6
mov ecx, 0x463e7c
call fcn.00418560
cmp esi, 1
jle 0x4053f1
push 0xd56
jmp 0x4053f6
push 0xd58
call fcn.00433c40
push eax
push esi
push 0xd54
call fcn.00433c40
push eax
call fcn.00414190
add esp, 0xc
cmp dword [esp + 0x40], 0
jne 0x405462
cmp dword [esp + 0x28], 0
jne 0x405462
push 0xd5a
call fcn.00433c40
push eax
call fcn.00414190
add esp, 4
push 0xa
mov ecx, 0x463e7c
call fcn.00418560
lea ecx, [esp + 0x3714]
call fcn.0041ccd0
lea ecx, [esp + 0x170d4]
mov byte [esp + 0x2bd90], 3
call fcn.0043e950
jmp 0x405b45
cmp byte [esp + 0x19], 0
lea ecx, [esp + 0x3714]
je 0x40547f
lea edx, [esp + 0xc1dc]
push edx
call fcn.00409e80
jmp 0x40548f
mov eax, dword [esp + 0x48]
push 0
push 0
push 0
push eax
call fcn.0040a5d0
lea ecx, [esp + 0x170d4]
mov byte [esp + 0x2bd90], 3
call fcn.0043e950
lea ecx, [esp + 0x3b32]
push ecx
lea edx, [esp + 0x3735]
push edx
push 0
mov ecx, 0x463e88
call fcn.004107b0
mov eax, dword [ebx + 0x28]
lea esi, [eax + 0x3b34]
mov al, byte [esi]
test al, al
je 0x4054f8
xor ecx, ecx
cmp al, 0x40
sete cl
lea edx, [esp + 0x3731]
dec ecx
and ecx, esi
mov eax, ecx
push eax
push edx
call fcn.00439720
test al, al
jne 0x4054f8
push 2
mov ecx, 0x463e7c
call fcn.00418ac0
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x3944], 0
je 0x405619
push 0xd50
call fcn.00433c40
push eax
call fcn.00414190
add esp, 4
cmp dword [esp + 0x178], 0
mov dword [esp + 0x28], 0
jbe 0x405619
mov ecx, dword [esp + 0x28]
push ecx
lea ecx, [esp + 0xc8]
call fcn.00406200
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 0x405564
cmp eax, 3
jne 0x405603
lea ecx, [esp + 0x2e88]
call fcn.00439e90
lea ecx, [esp + 0x2eac]
call fcn.00439e90
lea ecx, [esp + 0x2ed0]
call fcn.00439e90
mov edi, dword [esp + 0x58]
mov esi, dword [esp + 0x54]
push 0
lea edx, [esp + 0x2278]
push edx
push edi
push esi
call fcn.004203c0
test al, al
je 0x405603
lea ecx, [esp + 0x2e88]
call fcn.00439fa0
cmp eax, dword [esp + 0x6c]
jne 0x405603
cmp edx, dword [esp + 0x70]
jne 0x405603
mov eax, dword [esp + 0x2e74]
cmp eax, dword [esp + 0x5c]
jne 0x405603
mov ecx, dword [esp + 0x2e78]
cmp ecx, dword [esp + 0x60]
jne 0x405603
mov edx, dword [esp + 0x64]
and edx, 0xffffffdf
push edx
push edi
push esi
call fcn.0041e040
test al, al
jne 0x405603
push esi
push 0xe62
call fcn.00433c40
push eax
mov eax, dword [esp + 0x38]
push eax
call fcn.004149c0
add esp, 0xc
mov eax, dword [esp + 0x28]
inc eax
mov dword [esp + 0x28], eax
cmp eax, dword [esp + 0x178]
jb 0x405531
cmp byte [esp + 0xb5d9], 0
lea esi, [esp + 0xb5d9]
jne 0x405631
lea esi, [esp + 0x3731]
cmp word [esp + 0xb9da], 0
mov dword [esp + 0x2c], esi
lea edx, [esp + 0xb9da]
jne 0x40564e
lea edx, [esp + 0x3b32]
mov eax, dword [ebx + 0x28]
mov dword [esp + 0x1c], edx
add eax, 0x4f92
lea ebx, [ebx]
mov cl, byte [esi]
mov byte [eax], cl
inc esi
inc eax
test cl, cl
jne 0x405660
mov eax, dword [ebx + 0x28]
add eax, 0x5392
movzx ecx, word [edx]
mov word [eax], cx
add edx, 2
add eax, 2
test cx, cx
jne 0x405672
mov ecx, dword [ebx + 0x28]
cmp byte [ecx + 0x3a72], 0
je 0x4057fc
mov esi, dword [ebx + 0x1ec8]
test esi, esi
je 0x4056ad
mov ecx, esi
call fcn.00424a90
push esi
call fcn.00442989
add esp, 4
lea ecx, [esp + 0x255cc]
mov dword [ebx + 0x1ec8], 0
call fcn.00413730
mov eax, dword [ebx + 0x28]
mov byte [esp + 0x2903e], 1
mov dword [esp + 0x29500], 1
movzx edx, byte [eax + 0x3938]
mov byte [esp + 0x28f04], dl
movzx ecx, byte [eax + 0x3947]
mov byte [esp + 0x28f13], cl
movzx edx, byte [eax + 0x3971]
mov byte [esp + 0x28f3d], dl
movzx ecx, byte [eax + 0x3989]
mov byte [esp + 0x28f55], cl
mov edx, 0x54
lea esi, [eax + 0x341c]
mov eax, dword [esp + 0x1c]
mov word [esp + 0x2992e], dx
mov ecx, 0x40
lea edi, [esp + 0x289e8]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x2c]
push eax
push ecx
mov byte [esp + 0x2bd98], 0xa
movsw word es:[edi], word [esi]
call fcn.0041df30
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x2c]
test al, al
jne 0x405792
jmp 0x405760
mov edx, dword [ebx + 0x28]
cmp byte [edx + 0x3b34], 0x2e
je 0x4057e8
push esi
push edi
call fcn.004419c0
test al, al
sete al
mov byte [esp + 0x19], al
cmp al, 1
je 0x40578b
push esi
push edi
call fcn.0041df30
test al, al
je 0x405760
cmp byte [esp + 0x19], 0
jne 0x4057e8
push esi
push edi
lea ecx, [esp + 0x255d4]
call fcn.004105b0
mov ecx, dword [esp + 0x2b160]
push 0x452358
call fcn.00439370
mov esi, dword [0x463e80]
lea eax, [esp + 0x255cc]
push eax
lea ecx, [ebx + 0x30]
call fcn.0041c0d0
cmp esi, dword [0x463e80]
je 0x4057e8
lea ecx, [esp + 0x255cc]
mov byte [esp + 0x2bd90], 3
call fcn.00413340
jmp 0x405b45
lea ecx, [esp + 0x255cc]
mov byte [esp + 0x2bd90], 3
call fcn.00413340
mov ecx, dword [ebp + 0x14]
cmp byte [ecx], 0x4d
je 0x405814
mov edx, dword [ebx + 0x28]
cmp byte [edx + 0x398a], 0
je 0x405ac6
push 1
push 0
lea ecx, [esp + 0xcc]
call fcn.00406980
mov esi, dword [esp + 0x178]
or edi, 0xffffffff
lea ecx, [esp + 0x9c]
dec esi
mov dword [esp + 0x1c], edi
mov dword [esp + 0x48], edi
call fcn.0041f6b0
mov ecx, dword [ebx + 0x28]
cmp byte [ecx + 0x398d], 0
mov byte [esp + 0x2bd90], 0xb
mov byte [esp + 0x19], 0
je 0x40589b
call fcn.00410540
test al, al
jne 0x40589b
cmp dword [esp + 0x3c], 0
jne 0x40589b
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x3948], 0
jne 0x40589b
cmp byte [eax + 0x3949], 0
jne 0x40589b
mov edi, dword [esp + 0x178]
mov byte [esp + 0x19], 1
xor esi, esi
mov dword [esp + 0x1c], edi
mov dword [esp + 0x48], 1
mov dword [esp + 0x28], esi
cmp esi, edi
je 0x405ab2
jmp 0x4058b0
mov eax, dword [esp + 0x28]
push eax
lea ecx, [esp + 0xc8]
call fcn.00406200
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 0x4058e3
cmp eax, 3
jne 0x405a9c
mov ecx, dword [esp + 0x64]
push ecx
call fcn.0041dfe0
test al, al
jne 0x405a9c
mov edx, dword [ebx + 0x28]
mov edi, dword [esp + 0x58]
mov esi, dword [esp + 0x54]
cmp byte [edx + 0x398d], al
jne 0x40591d
mov eax, dword [esp + 0x64]
push eax
call fcn.0041e000
test al, al
jne 0x40591d
push edi
push esi
call fcn.0041ec90
mov ecx, dword [ebp + 0x14]
cmp byte [ecx + 1], 0x46
mov edx, dword [esp + 0x64]
push edx
setne byte [esp + 0x1c]
call fcn.0041dfb0
mov byte [esp + 0x17], al
test al, al
je 0x4059d9
cmp byte [esp + 0x18], 0
je 0x405a9c
mov eax, dword [ebx + 0x28]
mov cl, byte [eax + 0x398d]
test cl, cl
je 0x405991
cmp byte [esp + 0x19], 0
je 0x405991
push edi
push esi
call fcn.0041df30
test al, al
je 0x405a9c
push edi
push esi
lea ecx, [esp + 0xa4]
call fcn.0041f6e0
lea ecx, [esp + 0x9c]
call fcn.0041efd0
mov byte [esp + 0x16], 1
jmp 0x405a22
cmp byte [eax + 0x398c], 0
je 0x4059c0
push edi
push esi
call fcn.0041e3c0
test al, al
je 0x4059ae
push edi
push esi
call fcn.0041f310
jmp 0x405a1e
push 0x91
mov byte [esp + 0x1a], 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
jmp 0x405a22
test cl, cl
je 0x4059d0
lea ecx, [esp + 0x9c]
call fcn.0041efd0
push edi
push esi
call fcn.0041e2b0
jmp 0x405a1e
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x398d], 0
push edi
push esi
je 0x405a09
call fcn.0041df30
test al, al
je 0x405a9c
push edi
push esi
lea ecx, [esp + 0xa4]
call fcn.0041f6e0
mov byte [esp + 0x16], 1
jmp 0x405a22
cmp byte [eax + 0x398c], 0
je 0x405a19
call fcn.0041f100
jmp 0x405a1e
call fcn.0041e270
mov byte [esp + 0x16], al
xor eax, eax
cmp byte [esp + 0x17], al
push esi
setne al
lea eax, [eax*8 + 0xd4a]
push eax
call fcn.00433c40
push eax
call fcn.00414190
add esp, 8
cmp byte [esp + 0x16], 0
je 0x405a5e
push 0xd4c
call fcn.00433c40
push eax
call fcn.00414190
add esp, 4
jmp 0x405a9c
push 0xd4e
call fcn.00433c40
push eax
call fcn.00414190
add esp, 4
push esi
push 0xe7a
call fcn.00433c40
push eax
lea ecx, [esp + 0x3739]
push ecx
call fcn.004149c0
add esp, 0xc
call fcn.00413f90
mov ecx, 0x463e7c
call fcn.004186a0
mov eax, dword [esp + 0x28]
add eax, dword [esp + 0x48]
mov dword [esp + 0x28], eax
cmp eax, dword [esp + 0x1c]
jne 0x4058b0
lea ecx, [esp + 0x9c]
mov byte [esp + 0x2bd90], 3
call fcn.0041f6c0
test byte [esp + 0x8eb8], 1
je 0x405b26
mov edx, dword [ebx + 0x28]
cmp dword [edx + 0x3934], 0
je 0x405b26
lea ecx, [esp + 0x1ac]
call fcn.00431000
mov edx, dword [ebx + 0x28]
lea eax, [esp + 0xb9da]
push eax
lea ecx, [esp + 0xb5dd]
push ecx
push edx
lea ecx, [esp + 0x1b8]
mov byte [esp + 0x2bd9c], 0xc
call fcn.0042f4a0
lea ecx, [esp + 0x1ac]
mov byte [esp + 0x2bd90], 3
call fcn.0042f420
jmp 0x405b45
mov eax, dword [ebx + 0x28]
cmp byte [eax + 0x393a], 0
jne 0x405b45
push 0xd1c
call fcn.00433c40
push eax
call fcn.00414190
add esp, 4
lea ecx, [esp + 0x3714]
mov byte [esp + 0x2bd90], 2
call fcn.004074a0
lea ecx, [esp + 0xc1dc]
mov byte [esp + 0x2bd90], 1
call fcn.004074a0
mov eax, dword [esp + 0x16c]
test eax, eax
je 0x405b81
push eax
call fcn.00442994
add esp, 4
mov eax, dword [esp + 0xd4]
test eax, eax
je 0x405b95
push eax
call fcn.00442994
add esp, 4
mov eax, dword [esp + 0xc4]
test eax, eax
je 0x405ba9
push eax
call fcn.00442994
add esp, 4
lea ecx, [esp + 0x14ca4]
mov dword [esp + 0x2bd90], 0xffffffff
call fcn.00436000
mov ecx, dword [esp + 0x2bd88]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2bd70]
xor ecx, esp
call fcn.00443023
mov esp, ebp
pop ebp
ret 0x10