Function at 0x41a238
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0x13
push 0
push 0
dec ecx
jne 0x41a240
push ecx
push ebx
push esi
push edi
mov eax, 0x41a170
call fcn.004068b0
xor eax, eax
push ebp
push 0x41b344
push dword fs:[eax]
mov dword fs:[eax], esp
xor edx, edx
push ebp
push 0x41b2f6
push dword fs:[edx]
mov dword fs:[edx], esp
mov eax, 0xe1f524
mov edx, dword [0x418fb8]
call fcn.00405a24
mov eax, 0xe1f528
mov edx, dword [0x418fd8]
call fcn.00405a24
mov eax, dword [0x41cca0]
mov byte [eax], 0
lea edx, [ebp - 0x14]
xor eax, eax
call fcn.00402e74
mov edx, dword [ebp - 0x14]
mov eax, 0xe1f270
call fcn.00403194
xor eax, eax
push ebp
push 0x41b071
push dword fs:[eax]
mov dword fs:[eax], esp
mov edx, 1
mov eax, 0xe1f270
call fcn.004035d4
call fcn.00402ae8
xor eax, eax
push ebp
push 0x41b060
push dword fs:[eax]
mov dword fs:[eax], esp
xor esi, esi
push 0
mov edx, 0xe1f508
mov ecx, 2
mov eax, 0xe1f270
call fcn.004032ec
call fcn.00402ae8
cmp word [0xe1f508], 0x5a4d
jne 0x41a34d
mov edx, 0x3c
mov eax, 0xe1f270
call fcn.004035fc
call fcn.00402ae8
push 0
mov edx, 0xe1f508
mov ecx, 2
mov eax, 0xe1f270
call fcn.004032ec
call fcn.00402ae8
movzx edx, word [0xe1f508]
mov eax, 0xe1f270
call fcn.004035fc
call fcn.00402ae8
push 0
mov edx, 0xe1f514
mov ecx, 4
mov eax, 0xe1f270
call fcn.004032ec
call fcn.00402ae8
cmp dword [0xe1f514], 0x4550
jne 0x41a4f1
mov eax, 0xe1f270
call fcn.00403410
call fcn.00402ae8
mov edx, eax
add edx, 2
mov eax, 0xe1f270
call fcn.004035fc
call fcn.00402ae8
push 0
mov edx, 0xe1f508
mov ecx, 2
mov eax, 0xe1f270
call fcn.004032ec
call fcn.00402ae8
movzx eax, word [0xe1f508]
mov dword [0xe1f518], eax
mov eax, 0xe1f270
call fcn.00403410
call fcn.00402ae8
mov edx, eax
add edx, 0xc
mov eax, 0xe1f270
call fcn.004035fc
call fcn.00402ae8
push 0
mov edx, 0xe1f508
mov ecx, 2
mov eax, 0xe1f270
call fcn.004032ec
call fcn.00402ae8
mov eax, 0xe1f270
call fcn.00403410
call fcn.00402ae8
mov edx, eax
add edx, 2
movzx eax, word [0xe1f508]
add edx, eax
mov eax, 0xe1f270
call fcn.004035fc
call fcn.00402ae8
mov ebx, dword [0xe1f518]
test ebx, ebx
jle 0x41a4f1
mov dword [0xe1f514], 1
mov eax, 0xe1f270
call fcn.00403410
call fcn.00402ae8
mov edx, eax
add edx, 0x10
mov eax, 0xe1f270
call fcn.004035fc
call fcn.00402ae8
push 0
mov edx, 0xe1f50c
mov ecx, 4
mov eax, 0xe1f270
call fcn.004032ec
call fcn.00402ae8
push 0
mov edx, 0xe1f510
mov ecx, 4
mov eax, 0xe1f270
call fcn.004032ec
call fcn.00402ae8
cmp dword [0xe1f50c], 0
jle 0x41a4c1
mov eax, dword [0xe1f50c]
add eax, dword [0xe1f510]
cmp esi, eax
jge 0x41a4c1
mov esi, dword [0xe1f50c]
add esi, dword [0xe1f510]
mov eax, 0xe1f270
call fcn.00403410
call fcn.00402ae8
mov edx, eax
add edx, 0x10
mov eax, 0xe1f270
call fcn.004035fc
call fcn.00402ae8
inc dword [0xe1f514]
dec ebx
jne 0x41a444
lea eax, [esi + 0x91a]
mov dword [0xe1f514], eax
test esi, esi
je 0x41a517
mov eax, 0xe1f270
call fcn.00403460
call fcn.00402ae8
cmp eax, dword [0xe1f514]
jg 0x41a52e
lea edx, [ebp - 0x18]
xor eax, eax
call fcn.00402e74
mov eax, dword [ebp - 0x18]
mov edx, 0x26
call fcn.0041972c
mov edx, esi
mov eax, 0xe1f270
call fcn.004035fc
call fcn.00402ae8
push 0
mov edx, dword [0x41ccc8]
mov ecx, 0x91a
mov eax, 0xe1f270
call fcn.004032ec
call fcn.00402ae8
mov eax, dword [0x41ccc8]
cmp byte [eax + 0x914], 0
je 0x41a582
mov eax, dword [0x41ccc8]
add eax, 0x907
push eax
push 0xffffffffffffffff
push 0
call fcn.00406994
mov dword [0x41cb04], eax
mov eax, dword [0x41ccc8]
cmp byte [eax + 0x914], 0
je 0x41a5a0
call sub.kernel32.dll_GetLastError_1
cmp eax, 0xb7
je 0x41b026
call fcn.00418c8c
call fcn.00419f70
call fcn.00419f48
jmp 0x41a70d
mov edx, dword [0xe1f514]
mov eax, 0xe1f270
call fcn.004035fc
call fcn.00402ae8
push 0
mov edx, dword [0x41cbfc]
mov ecx, 0x11
mov eax, 0xe1f270
call fcn.004032ec
call fcn.00402ae8
mov ebx, dword [0x41cbfc]
mov ebx, dword [ebx + 1]
test ebx, ebx
jne 0x41a617
mov eax, dword [0x41cbfc]
cmp dword [eax + 5], 0
jne 0x41a617
mov eax, dword [0x41cbfc]
cmp dword [eax + 9], 0
jne 0x41a617
mov eax, dword [0x41cbfc]
cmp dword [eax + 0xd], 0
je 0x41a731
add dword [0xe1f514], 0x11
mov eax, dword [0x41cbfc]
add dword [0xe1f514], ebx
mov eax, dword [0x41ccc8]
cmp byte [eax + 0x913], 0
je 0x41a6de
xor eax, eax
mov dword [0xe1f518], eax
jmp 0x41a6a8
mov edx, dword [0xe1f514]
mov eax, 0xe1f270
call fcn.004035fc
call fcn.00402ae8
push 0
mov edx, 0xe1f51c
mov ecx, 4
mov eax, 0xe1f270
call fcn.004032ec
call fcn.00402ae8
mov eax, dword [0xe1f51c]
add dword [0xe1f518], eax
push 0
mov edx, 0xe1f51c
mov ecx, 4
mov eax, 0xe1f270
call fcn.004032ec
call fcn.00402ae8
mov eax, dword [0xe1f51c]
add eax, 8
add dword [0xe1f514], eax
cmp dword [0xe1f514], 0
jl 0x41a6ec
mov eax, 0xe1f270
call fcn.00403460
call fcn.00402ae8
cmp eax, dword [0xe1f514]
jle 0x41a6ec
mov eax, dword [0x41cbfc]
mov eax, dword [eax + 5]
cmp eax, dword [0xe1f518]
jg 0x41a644
jmp 0x41a6ec
mov eax, dword [0x41cbfc]
mov eax, dword [eax + 5]
add dword [0xe1f514], eax
add dword [0xe1f514], 4
mov eax, dword [0x41cbfc]
mov eax, dword [eax + 5]
cdq
add dword [0x41caf4], eax
adc dword [0x41caf8], edx
call fcn.00419f48
cmp dword [0xe1f514], 0
jl 0x41a731
mov eax, 0xe1f270
call fcn.00403460
call fcn.00402ae8
cmp eax, dword [0xe1f514]
jg 0x41a5b4
cmp dword [0x41caf8], 0
jne 0x41a741
cmp dword [0x41caf4], 0
je 0x41a785
cmp dword [0x41caf8], 0
jne 0x41a757
cmp dword [0x41caf4], 0
jbe 0x41a79c
jmp 0x41a759
jle 0x41a79c
mov eax, dword [0x41cbfc]
cmp dword [eax + 1], 0
jne 0x41a785
mov eax, dword [0x41cbfc]
cmp dword [eax + 5], 0
jne 0x41a785
mov eax, dword [0x41cbfc]
cmp dword [eax + 9], 0
jne 0x41a785
mov eax, dword [0x41cbfc]
cmp dword [eax + 0xd], 0
je 0x41a79c
lea edx, [ebp - 0x1c]
xor eax, eax
call fcn.00402e74
mov eax, dword [ebp - 0x1c]
mov edx, 0xd
call fcn.0041972c
mov eax, dword [0x41ccc8]
movzx eax, byte [eax + 1]
cmp eax, 5
ja case.0x41a7ae.0
jmp dword [eax*4 + 0x41a7b5]
lea edx, [ebp - 0x20]
mov eax, 0x10
call 0x419208
mov edx, dword [ebp - 0x20]
mov eax, 0x41cae0
call fcn.00404ae8
jmp 0x41a8c0
lea edx, [ebp - 0x24]
mov eax, 5
call 0x419208
mov edx, dword [ebp - 0x24]
mov eax, 0x41cae0
call fcn.00404ae8
jmp 0x41a8c0
lea eax, [ebp - 0x28]
call fcn.004192b0
mov edx, dword [ebp - 0x28]
mov eax, 0x41cae0
call fcn.00404ae8
jmp 0x41a8c0
mov eax, dword [0x41cc00]
movzx eax, byte [eax]
mov edx, dword [0x41cd08]
mov eax, dword [edx + eax*4]
call fcn.00404f30
mov edx, eax
lea eax, [ebp - 0x30]
call fcn.00404c8c
mov eax, dword [ebp - 0x30]
lea ecx, [ebp - 0x2c]
mov edx, 1
call fcn.00419000
mov edx, dword [ebp - 0x2c]
mov eax, 0x41cae0
call fcn.00404ae8
cmp dword [0x41cae0], 0
jne 0x41a8c0
xor edx, edx
xor eax, eax
call fcn.0041972c
jmp 0x41a8c0
lea eax, [ebp - 0x38]
mov edx, dword [0x41ccc8]
add edx, 0x802
mov ecx, 0x105
call fcn.00404d04
mov eax, dword [ebp - 0x38]
lea edx, [ebp - 0x34]
call fcn.004192fc
mov edx, dword [ebp - 0x34]
mov eax, 0x41cae0
call fcn.00404ae8
jmp 0x41a8c0
lea edx, [ebp - 0x3c]
mov al, 1
call fcn.00419110
mov edx, dword [ebp - 0x3c]
mov eax, 0x41cae0
call fcn.00404ae8
lea edx, [ebp - 0x40]
mov eax, dword [0x41cae0]
call fcn.00408740
mov edx, dword [ebp - 0x40]
mov eax, 0x41cae0
call fcn.00404ae8
lea edx, [ebp - 0x44]
mov eax, dword [0x41cae0]
call fcn.00408674
mov eax, dword [ebp - 0x44]
mov al, byte [eax]
call fcn.00402ed8
sub al, 0x41
inc eax
call fcn.00408838
mov dword [0xe1f52c], eax
mov dword [0xe1f530], edx
mov eax, dword [0x41caf4]
mov edx, dword [0x41caf8]
cmp edx, dword [0xe1f530]
jne 0x41a927
cmp eax, dword [0xe1f52c]
jbe 0x41a9a6
jmp 0x41a929
jle 0x41a9a6
lea eax, [ebp - 0x48]
push eax
lea edx, [ebp - 0x64]
mov eax, dword [0x41cae0]
call fcn.00408674
mov eax, dword [ebp - 0x64]
mov al, byte [eax]
call fcn.00402ed8
mov byte [ebp - 0x60], al
mov byte [ebp - 0x5c], 2
push dword [0xe1f530]
push dword [0xe1f52c]
lea eax, [ebp - 0x68]
call fcn.00419978
mov eax, dword [ebp - 0x68]
mov dword [ebp - 0x58], eax
mov byte [ebp - 0x54], 0xb
push dword [0x41caf8]
push dword [0x41caf4]
lea eax, [ebp - 0x6c]
call fcn.00419978
mov eax, dword [ebp - 0x6c]
mov dword [ebp - 0x50], eax
mov byte [ebp - 0x4c], 0xb
lea edx, [ebp - 0x60]
mov ecx, 2
mov eax, 0x41b35c
call fcn.00408e54
mov eax, dword [ebp - 0x48]
mov edx, 0x70
call fcn.0041972c
mov eax, dword [0x41cae0]
call fcn.004193a8
lea edx, [esi + 0x91a]
mov eax, 0xe1f270
call fcn.004035fc
call fcn.00402ae8
jmp 0x41affc
push 0
mov edx, dword [0x41cbfc]
mov ecx, 0x11
mov eax, 0xe1f270
call fcn.004032ec
call fcn.00402ae8
mov eax, dword [0x41cbfc]
cmp dword [eax + 1], 0
jne 0x41aa16
mov eax, dword [0x41cbfc]
cmp dword [eax + 5], 0
jne 0x41aa16
mov eax, dword [0x41cbfc]
cmp dword [eax + 9], 0
jne 0x41aa16
mov eax, dword [0x41cbfc]
cmp dword [eax + 0xd], 0
je 0x41b043
mov eax, dword [0x41cbfc]
cmp byte [eax], 2
jne 0x41aa39
lea edx, [ebp - 0x70]
xor eax, eax
call fcn.00419110
mov edx, dword [ebp - 0x70]
mov eax, 0xe1f520
call fcn.00404ae8
jmp 0x41aa49
mov eax, 0xe1f520
mov edx, dword [0x41cae0]
call fcn.00404ae8
mov eax, dword [0xe1f520]
call fcn.00404d30
mov dword [0xe1f518], eax
mov edx, dword [0x41cbfc]
mov edx, dword [edx + 1]
add edx, dword [0xe1f518]
mov eax, 0xe1f520
call fcn.004050bc
push 0
mov eax, 0xe1f520
call fcn.00404f88
mov edx, dword [0xe1f518]
lea edx, [eax + edx]
mov ecx, dword [0x41cbfc]
mov ecx, dword [ecx + 1]
mov eax, 0xe1f270
call fcn.004032ec
call fcn.00402ae8
mov eax, 0xe1f520
call fcn.00404f88
mov edx, dword [0xe1f518]
add eax, edx
mov edx, dword [0x41cbfc]
mov edx, dword [edx + 1]
call fcn.00417e68
mov dword [0xe1f510], eax
mov eax, dword [0x41cbfc]
test byte [eax + 0xd], 0x10
jne 0x41af9a
mov ebx, dword [0x41cbfc]
mov bl, byte [ebx]
mov eax, ebx
dec al
je 0x41aae6
dec al
je 0x41aaf8
jmp 0x41ab08
mov eax, 0x41cae4
mov edx, dword [0xe1f520]
call fcn.00404ae8
jmp 0x41ab08
mov eax, 0x41cae8
mov edx, dword [0xe1f520]
call fcn.00404ae8
mov eax, dword [0x41cbfc]
sub bl, 2
je 0x41ab54
mov eax, dword [0xe1f524]
call fcn.0040583c
inc eax
push eax
mov eax, 0xe1f524
mov ecx, 1
mov edx, dword [0x418fb8]
call fcn.00405a18
add esp, 4
mov eax, dword [0xe1f524]
call fcn.00405844
mov edx, dword [0xe1f524]
lea eax, [edx + eax*4]
mov edx, dword [0xe1f520]
call fcn.00404ae8
mov eax, dword [0xe1f520]
call fcn.00408340
test al, al
je 0x41ac04
mov eax, dword [0x41ccc8]
mov al, byte [eax + 0x919]
dec al
je 0x41ab7b
dec al
je 0x41ab87
jmp 0x41ab90
mov byte [0xe1f580], 1
jmp 0x41ac0b
mov byte [0xe1f580], 0
jmp 0x41ac0b
push 0x40124
push 0
lea eax, [ebp - 0x74]
push eax
lea edx, [ebp - 0x78]
mov eax, 0x50
call fcn.0040af0c
mov eax, dword [ebp - 0x78]
mov dword [ebp - 0x60], eax
mov byte [ebp - 0x5c], 0xb
mov eax, dword [0xe1f520]
mov dword [ebp - 0x58], eax
mov byte [ebp - 0x54], 0xb
mov eax, dword [0x41cc00]
movzx eax, byte [eax]
mov edx, dword [0x41cb58]
mov eax, dword [edx + eax*4]
mov dword [ebp - 0x50], eax
mov byte [ebp - 0x4c], 0xb
lea edx, [ebp - 0x60]
mov ecx, 2
mov eax, 0x41b378
call fcn.00408e54
mov eax, dword [ebp - 0x74]
call fcn.00404f30
push eax
push 0
call sub.user32.dll_MessageBoxA_1
cmp eax, 6
sete byte [0xe1f580]
jmp 0x41ac0b
mov byte [0xe1f580], 1
cmp byte [0xe1f580], 0
je 0x41ac7f
mov eax, dword [0x41cca0]
mov byte [eax], 1
xor edx, edx
mov eax, dword [0xe1f520]
call fcn.004084b4
mov edx, dword [0xe1f520]
mov eax, 0xe1f3bc
call fcn.00403194
xor eax, eax
push ebp
push 0x41ac64
push dword fs:[eax]
mov dword fs:[eax], esp
mov edx, 1
mov eax, 0xe1f3bc
call fcn.004035f0
call fcn.00402ae8
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x41ac7f
xor eax, eax
push ebp
push 0x41af93
push dword fs:[eax]
mov dword fs:[eax], esp
xor eax, eax
mov dword [0xe1f514], eax
jmp 0x41aefd
mov eax, dword [0x41ccc8]
cmp byte [eax + 0x913], 0
je 0x41ae1e
push 0
mov edx, 0xe1f518
mov ecx, 4
mov eax, 0xe1f270
call fcn.004032ec
call fcn.00402ae8
push 0
mov edx, 0xe1f51c
mov ecx, 4
mov eax, 0xe1f270
call fcn.004032ec
call fcn.00402ae8
cmp dword [0xe1f51c], 0xa00000
jle 0x41ad04
lea edx, [ebp - 0x7c]
xor eax, eax
call fcn.00402e74
mov eax, dword [ebp - 0x7c]
mov edx, 8
call fcn.0041972c
push 0
mov edx, dword [0x41cc48]
mov ecx, dword [0xe1f51c]
mov eax, 0xe1f270
call fcn.004032ec
call fcn.00402ae8
xor eax, eax
mov dword [0xe1f578], eax
xor eax, eax
push ebp
push 0x41ad60
push dword fs:[eax]
mov dword fs:[eax], esp
push 0xe1f578
push 0xe1f57c
mov eax, dword [0x41cc48]
mov ecx, dword [0xe1f518]
mov edx, dword [0xe1f51c]
call fcn.00413f30
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x41ad79
xor eax, eax
push ebp
push 0x41ae17
push dword fs:[eax]
mov dword fs:[eax], esp
cmp byte [0xe1f580], 0
je 0x41ade0
xor eax, eax
push ebp
push 0x41adc5
push dword fs:[eax]
mov dword fs:[eax], esp
push 0
mov edx, dword [0xe1f578]
mov ecx, dword [0xe1f57c]
mov eax, 0xe1f3bc
call fcn.0040330c
call fcn.00402ae8
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x41ade0
mov edx, dword [0xe1f57c]
mov eax, dword [0xe1f578]
call fcn.00417e68
add dword [0xe1f510], eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x41aed6
cmp dword [0xe1f578], 0
je 0x41ae16
mov eax, dword [0xe1f578]
call fcn.00402a14
ret
mov eax, dword [0x41cbfc]
mov esi, edi
sub esi, dword [0xe1f514]
cmp esi, 0xa00000
jle 0x41ae3f
mov dword [0xe1f518], 0xa00000
jmp 0x41ae4a
mov eax, dword [0x41cbfc]
mov dword [0xe1f518], esi
push 0
mov edx, dword [0x41cc48]
mov ecx, dword [0xe1f518]
mov eax, 0xe1f270
call fcn.004032ec
call fcn.00402ae8
cmp byte [0xe1f580], 0
je 0x41aec0
xor eax, eax
push ebp
push 0x41aea5
push dword fs:[eax]
mov dword fs:[eax], esp
push 0
mov edx, dword [0x41cc48]
mov ecx, dword [0xe1f518]
mov eax, 0xe1f3bc
call fcn.0040330c
call fcn.00402ae8
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x41aec0
mov eax, dword [0x41cc48]
mov edx, dword [0xe1f518]
call fcn.00417e68
add dword [0xe1f510], eax
mov eax, dword [0xe1f518]
cdq
add dword [0x41cafc], eax
adc dword [0x41cb00], edx
mov eax, dword [0xe1f518]
add dword [0xe1f514], eax
call fcn.0041a0b4
call fcn.00419f48
mov edi, dword [0x41cbfc]
mov edi, dword [edi + 5]
cmp edi, dword [0xe1f514]
jg 0x41ac99
push 0
mov edx, 0xe1f50c
mov ecx, 4
mov eax, 0xe1f270
call fcn.004032ec
call fcn.00402ae8
mov eax, dword [0xe1f50c]
cmp eax, dword [0xe1f510]
je 0x41af51
lea edx, [ebp - 0x80]
xor eax, eax
call fcn.00402e74
mov eax, dword [ebp - 0x80]
mov edx, 0x17
call fcn.0041972c
cmp byte [0xe1f580], 0
je 0x41af6d
mov edx, dword [0x41cbfc]
mov edx, dword [edx + 9]
mov eax, dword [0xe1f3bc]
call fcn.0040845c
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x41afe9
cmp byte [0xe1f580], 0
je 0x41af92
mov eax, 0xe1f3bc
call fcn.0040332c
call fcn.00402ae8
ret
mov eax, dword [0xe1f520]
call fcn.004193a8
push 0
mov edx, 0xe1f50c
mov ecx, 4
mov eax, 0xe1f270
call fcn.004032ec
call fcn.00402ae8
mov eax, dword [0xe1f50c]
cmp eax, dword [0xe1f510]
je 0x41afe9
lea edx, [ebp - 0x84]
xor eax, eax
call fcn.00402e74
mov eax, dword [ebp - 0x84]
mov edx, 0x17
call fcn.0041972c
mov edx, dword [0x41cbfc]
mov edx, dword [edx + 0xd]
mov eax, dword [0xe1f520]
call fcn.004084b4
mov eax, 0xe1f270
call fcn.00403410
call fcn.00402ae8
mov ebx, eax
mov eax, 0xe1f270
call fcn.00403460
call fcn.00402ae8
cmp ebx, eax
jl 0x41a9ca
jmp 0x41b043
lea edx, [ebp - 0x88]
xor eax, eax
call fcn.00402e74
mov eax, dword [ebp - 0x88]
mov edx, 0x480
call fcn.0041972c
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x41b067
mov eax, 0xe1f270
call fcn.0040332c
call fcn.00402ae8
ret