Function at 0x40a954
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0xd
push 0
push 0
dec ecx
jne 0x40a95c
push ecx
push ebx
push esi
push edi
mov eax, 0x40a8fc
call fcn.004056f4
xor eax, eax
push ebp
push 0x40b462
push dword fs:[eax]
mov dword fs:[eax], esp
call sub.kernel32.dll_GetSystemDefaultLangID
and ax, 0xff
movzx eax, ax
add eax, 0xfffffffb
cmp eax, 0x14
ja case.0x40a999.5
mov al, byte [eax + 0x40a9a0]
jmp dword [eax*4 + 0x40a9b5]
mov byte [0x40c2fc], 1
jmp case.0x40a999.5
mov byte [0x40c2fc], 2
jmp case.0x40a999.5
mov byte [0x40c2fc], 3
jmp case.0x40a999.5
mov byte [0x40c2fc], 4
jmp case.0x40a999.5
mov byte [0x40c2fc], 5
jmp case.0x40a999.5
mov byte [0x40c2fc], 6
call fcn.0040a710
call fcn.0040a6e8
mov eax, dword [0x40c464]
mov byte [eax], 0
lea edx, [ebp - 0x14]
xor eax, eax
call fcn.00402c78
mov edx, dword [ebp - 0x14]
mov eax, 0x50d7c4
call fcn.00402f7c
xor eax, eax
push ebp
push 0x40aa5a
push dword fs:[eax]
mov dword fs:[eax], esp
mov edx, 1
mov eax, 0x50d7c4
call fcn.0040334c
call fcn.004029a8
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x40aa7f
xor eax, eax
push ebp
push 0x40b2b7
push dword fs:[eax]
mov dword fs:[eax], esp
xor eax, eax
push ebp
push 0x40b275
push dword fs:[eax]
mov dword fs:[eax], esp
xor esi, esi
push 0
mov edx, 0x50da5c
mov ecx, 2
mov eax, 0x50d7c4
call fcn.004030d4
call fcn.004029a8
cmp word [0x50da5c], 0x5a4d
jne 0x40ab08
mov edx, 0x3c
mov eax, 0x50d7c4
call fcn.00403374
call fcn.004029a8
push 0
mov edx, 0x50da5c
mov ecx, 2
mov eax, 0x50d7c4
call fcn.004030d4
call fcn.004029a8
movzx edx, word [0x50da5c]
mov eax, 0x50d7c4
call fcn.00403374
call fcn.004029a8
push 0
mov edx, 0x50da68
mov ecx, 4
mov eax, 0x50d7c4
call fcn.004030d4
call fcn.004029a8
cmp dword [0x50da68], 0x4550
jne 0x40acac
mov eax, 0x50d7c4
call fcn.00403188
call fcn.004029a8
mov edx, eax
add edx, 2
mov eax, 0x50d7c4
call fcn.00403374
call fcn.004029a8
push 0
mov edx, 0x50da5c
mov ecx, 2
mov eax, 0x50d7c4
call fcn.004030d4
call fcn.004029a8
movzx eax, word [0x50da5c]
mov dword [0x50da6c], eax
mov eax, 0x50d7c4
call fcn.00403188
call fcn.004029a8
mov edx, eax
add edx, 0xc
mov eax, 0x50d7c4
call fcn.00403374
call fcn.004029a8
push 0
mov edx, 0x50da5c
mov ecx, 2
mov eax, 0x50d7c4
call fcn.004030d4
call fcn.004029a8
mov eax, 0x50d7c4
call fcn.00403188
call fcn.004029a8
mov edx, eax
add edx, 2
movzx eax, word [0x50da5c]
add edx, eax
mov eax, 0x50d7c4
call fcn.00403374
call fcn.004029a8
mov ebx, dword [0x50da6c]
test ebx, ebx
jle 0x40acac
mov dword [0x50da68], 1
mov eax, 0x50d7c4
call fcn.00403188
call fcn.004029a8
mov edx, eax
add edx, 0x10
mov eax, 0x50d7c4
call fcn.00403374
call fcn.004029a8
push 0
mov edx, 0x50da60
mov ecx, 4
mov eax, 0x50d7c4
call fcn.004030d4
call fcn.004029a8
push 0
mov edx, 0x50da64
mov ecx, 4
mov eax, 0x50d7c4
call fcn.004030d4
call fcn.004029a8
cmp dword [0x50da60], 0
jle 0x40ac7c
mov eax, dword [0x50da60]
add eax, dword [0x50da64]
cmp esi, eax
jge 0x40ac7c
mov esi, dword [0x50da60]
add esi, dword [0x50da64]
mov eax, 0x50d7c4
call fcn.00403188
call fcn.004029a8
mov edx, eax
add edx, 0x10
mov eax, 0x50d7c4
call fcn.00403374
call fcn.004029a8
inc dword [0x50da68]
dec ebx
jne 0x40abff
lea eax, [esi + 0xb]
mov dword [0x50da68], eax
test esi, esi
je 0x40accf
mov eax, 0x50d7c4
call fcn.004031d8
call fcn.004029a8
cmp eax, dword [0x50da68]
jg 0x40ace6
lea edx, [ebp - 0x1c]
xor eax, eax
call fcn.00402c78
mov eax, dword [ebp - 0x1c]
mov edx, 0xc1
call fcn.00409ff0
mov edx, esi
mov eax, 0x50d7c4
call fcn.00403374
call fcn.004029a8
push 0
mov edx, dword [0x40c484]
mov ecx, 0xb
mov eax, 0x50d7c4
call fcn.004030d4
call fcn.004029a8
jmp 0x40adaf
mov edx, dword [0x50da68]
mov eax, 0x50d7c4
call fcn.00403374
call fcn.004029a8
push 0
mov edx, dword [0x40c3f8]
mov ecx, 0x11
mov eax, 0x50d7c4
call fcn.004030d4
call fcn.004029a8
mov ebx, dword [0x40c3f8]
mov ebx, dword [ebx + 1]
test ebx, ebx
jne 0x40ad77
mov eax, dword [0x40c3f8]
cmp dword [eax + 5], 0
jne 0x40ad77
mov eax, dword [0x40c3f8]
cmp dword [eax + 9], 0
jne 0x40ad77
mov eax, dword [0x40c3f8]
cmp dword [eax + 0xd], 0
je 0x40add3
add dword [0x50da68], 0x11
mov eax, dword [0x40c3f8]
add dword [0x50da68], ebx
mov edi, dword [0x40c3f8]
mov edi, dword [edi + 5]
add dword [0x50da68], edi
add dword [0x50da68], 4
mov eax, dword [0x40c3f8]
add dword [0x40c2f4], edi
call fcn.0040a6e8
cmp dword [0x50da68], 0
jl 0x40add3
mov eax, 0x50d7c4
call fcn.004031d8
call fcn.004029a8
cmp eax, dword [0x50da68]
jg 0x40ad18
cmp dword [0x40c2f4], 0
je 0x40ae11
cmp dword [0x40c2f4], 0
jle 0x40ae28
mov eax, dword [0x40c3f8]
cmp dword [eax + 1], 0
jne 0x40ae11
mov eax, dword [0x40c3f8]
cmp dword [eax + 5], 0
jne 0x40ae11
mov eax, dword [0x40c3f8]
cmp dword [eax + 9], 0
jne 0x40ae11
mov eax, dword [0x40c3f8]
cmp dword [eax + 0xd], 0
je 0x40ae28
lea edx, [ebp - 0x20]
xor eax, eax
call fcn.00402c78
mov eax, dword [ebp - 0x20]
mov edx, 0xc1
call fcn.00409ff0
lea eax, [ebp - 0x24]
call fcn.00409c48
mov edx, dword [ebp - 0x24]
mov eax, 0x40c2e4
call fcn.00404560
lea edx, [ebp - 0x28]
mov eax, dword [0x40c2e4]
call fcn.00406cbc
mov eax, dword [ebp - 0x28]
mov al, byte [eax]
call fcn.00402cdc
sub al, 0x41
inc eax
call fcn.00406e44
mov dword [0x50da74], eax
mov dword [0x50da78], edx
mov eax, dword [0x40c2f4]
cdq
cmp edx, dword [0x50da78]
jne 0x40ae80
cmp eax, dword [0x50da74]
jbe 0x40aefb
jmp 0x40ae82
jle 0x40aefb
lea eax, [ebp - 0x2c]
push eax
lea edx, [ebp - 0x48]
mov eax, dword [0x40c2e4]
call fcn.00406cbc
mov eax, dword [ebp - 0x48]
mov al, byte [eax]
call fcn.00402cdc
mov byte [ebp - 0x44], al
mov byte [ebp - 0x40], 2
push dword [0x50da78]
push dword [0x50da74]
lea eax, [ebp - 0x4c]
call fcn.0040a1a4
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x3c], eax
mov byte [ebp - 0x38], 0xb
mov eax, dword [0x40c2f4]
cdq
push edx
push eax
lea eax, [ebp - 0x50]
call fcn.0040a1a4
mov eax, dword [ebp - 0x50]
mov dword [ebp - 0x34], eax
mov byte [ebp - 0x30], 0xb
lea edx, [ebp - 0x44]
mov ecx, 2
mov eax, 0x40b47c
call fcn.004073f4
mov eax, dword [ebp - 0x2c]
mov edx, 0x70
call fcn.00409ff0
mov eax, dword [0x40c2e4]
call fcn.00406980
lea edx, [esi + 0xb]
mov eax, 0x50d7c4
call fcn.00403374
call fcn.004029a8
jmp 0x40b243
push 0
mov edx, dword [0x40c3f8]
mov ecx, 0x11
mov eax, 0x50d7c4
call fcn.004030d4
call fcn.004029a8
mov eax, dword [0x40c3f8]
cmp dword [eax + 1], 0
jne 0x40af68
mov eax, dword [0x40c3f8]
cmp dword [eax + 5], 0
jne 0x40af68
mov eax, dword [0x40c3f8]
cmp dword [eax + 9], 0
jne 0x40af68
mov eax, dword [0x40c3f8]
cmp dword [eax + 0xd], 0
je 0x40b26b
mov eax, 0x50da70
mov edx, dword [0x40c2e4]
call fcn.00404560
mov eax, dword [0x40c2e4]
call fcn.0040478c
mov edx, eax
mov eax, dword [0x40c3f8]
add edx, dword [eax + 1]
mov eax, 0x50da70
call fcn.00404b18
push 0
mov eax, dword [0x40c2e4]
call fcn.0040478c
mov ebx, eax
mov eax, 0x50da70
call fcn.004049e4
lea edx, [eax + ebx]
mov ecx, dword [0x40c3f8]
mov ecx, dword [ecx + 1]
mov eax, 0x50d7c4
call fcn.004030d4
call fcn.004029a8
mov eax, dword [0x40c2e4]
call fcn.0040478c
mov ebx, eax
mov eax, 0x50da70
call fcn.004049e4
add eax, ebx
mov edx, dword [0x40c3f8]
mov edx, dword [edx + 1]
call fcn.00409a68
mov dword [0x50da64], eax
mov eax, dword [0x40c3f8]
cmp byte [eax], 0
je 0x40b00e
mov eax, 0x40c2e8
mov edx, dword [0x50da70]
call fcn.00404560
mov eax, dword [0x40c2f0]
call fcn.0040478c
inc eax
push eax
lea eax, [ebp - 0x58]
mov edx, 0x40b494
mov dl, byte [edx]
call fcn.004046d8
mov ecx, dword [ebp - 0x58]
lea eax, [ebp - 0x54]
mov edx, dword [0x50da70]
call fcn.004047d8
mov eax, dword [ebp - 0x54]
mov edx, 0x40c2f0
pop ecx
call fcn.00404a74
lea edx, [ebp - 0x5c]
mov eax, dword [0x50da70]
call fcn.00406c68
mov eax, dword [ebp - 0x5c]
call fcn.00406980
mov eax, dword [0x40c464]
mov byte [eax], 1
mov edx, dword [0x50da70]
mov eax, 0x50d910
call fcn.00402f7c
xor eax, eax
push ebp
push 0x40b0a1
push dword fs:[eax]
mov dword fs:[eax], esp
mov edx, 1
mov eax, 0x50d910
call fcn.00403368
call fcn.004029a8
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x40b0bc
xor eax, eax
push ebp
push 0x40b229
push dword fs:[eax]
mov dword fs:[eax], esp
xor eax, eax
mov dword [0x50da68], eax
jmp 0x40b1a5
mov eax, dword [0x40c3f8]
mov esi, ebx
sub esi, dword [0x50da68]
cmp esi, 0x100000
jle 0x40b0f7
mov dword [0x50da6c], 0x100000
jmp 0x40b102
mov eax, dword [0x40c3f8]
mov dword [0x50da6c], esi
push 0
mov edx, dword [0x40c428]
mov ecx, dword [0x50da6c]
mov eax, 0x50d7c4
call fcn.004030d4
call fcn.004029a8
xor eax, eax
push ebp
push 0x40b154
push dword fs:[eax]
mov dword fs:[eax], esp
push 0
mov edx, dword [0x40c428]
mov ecx, dword [0x50da6c]
mov eax, 0x50d910
call fcn.004030f4
call fcn.004029a8
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x40b16f
mov eax, dword [0x40c428]
mov edx, dword [0x50da6c]
call fcn.00409a68
add dword [0x50da64], eax
mov eax, dword [0x50da6c]
add dword [0x50da68], eax
mov eax, dword [0x50da6c]
add dword [0x40c2f8], eax
call fcn.0040a838
call fcn.0040a6e8
mov ebx, dword [0x40c3f8]
mov ebx, dword [ebx + 5]
cmp ebx, dword [0x50da68]
jg 0x40b0d6
push 0
mov edx, 0x50da60
mov ecx, 4
mov eax, 0x50d7c4
call fcn.004030d4
call fcn.004029a8
mov eax, dword [0x50da60]
cmp eax, dword [0x50da64]
je 0x40b1f9
lea edx, [ebp - 0x60]
xor eax, eax
call fcn.00402c78
mov eax, dword [ebp - 0x60]
mov edx, 0xc1
call fcn.00409ff0
mov edx, dword [0x40c3f8]
mov edx, dword [edx + 9]
mov eax, dword [0x50d910]
call fcn.00406a68
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x40b230
mov eax, 0x50d910
call fcn.00403114
call fcn.004029a8
ret
mov eax, 0x50d7c4
call fcn.00403188
call fcn.004029a8
mov ebx, eax
mov eax, 0x50d7c4
call fcn.004031d8
call fcn.004029a8
cmp ebx, eax
jl 0x40af1c
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x40b29a
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x40b2be
mov eax, 0x50d7c4
call fcn.00403114
call fcn.004029a8
ret