Function at 0x409ea0
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x30
push ebx
push esi
or eax, 0xffffffff
lea ecx, [ebp - 0x2c]
push edi
mov word [ebp - 0x14], ax
xor edi, edi
xor eax, eax
mov dword [ebp - 8], edi
push 0x64
mov word [ebp - 0x12], ax
call fcn.00406278
mov ecx, dword [ebp + 0x10]
call fcn.00404140
mov ebx, dword [ebp + 0xc]
cmp word [ebx], di
je 0x409fe2
lea esp, [esp]
movzx eax, word [ebx + edi*2]
cmp eax, 0x20
je 0x40a019
cmp eax, 9
je 0x40a019
movzx eax, word [ebx + edi*2]
mov dword [ebp - 8], edi
test ax, ax
je 0x409fe2
mov esi, eax
mov word [ebp - 0x12], di
mov dword [ebp - 0x10], eax
cmp esi, 0x30
jae 0x409f7e
cmp esi, 0x2e
je 0x409f83
cmp esi, 0x41
jae 0x40a01f
cmp esi, 0x61
jae 0x40a117
cmp esi, 0x5f
je 0x40a120
mov eax, esi
cmp eax, 0x24
je case.0x409f5b.64
cmp eax, 0x3d
je 0x40a14c
sub eax, 0x1a
cmp eax, 0x44
ja case.0x409f5b.27
movzx eax, byte [eax + 0x40a46c]
jmp dword [eax*4 + 0x40a420]
push 0x4f
lea ecx, [ebp - 0x1c]
call fcn.0040a60b
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x1c]
push eax
call fcn.0040a4b1
inc edi
mov dword [ebp - 8], edi
jmp 0x409fd7
cmp esi, 0x39
ja 0x409f14
mov eax, dword [ebp + 0x10]
mov edi, 0x40
mov ecx, dword [eax + 8]
mov dword [ebp - 0xc], ecx
test ecx, ecx
je 0x409fa0
mov eax, dword [eax + 4]
mov eax, dword [eax + ecx*4 - 4]
movzx edi, word [eax + 8]
push edi
lea eax, [ebp - 0x2c]
mov ecx, ebx
push eax
lea eax, [ebp - 0x1c]
push eax
lea edx, [ebp - 8]
call fcn.00404573
add esp, 0xc
cmp al, 1
jne 0x40a37b
cmp di, 0x4a
je 0x40a320
mov edi, dword [ebp - 8]
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x1c]
push eax
call fcn.0040a4b1
cmp word [ebx + edi*2], 0
jne 0x409ee0
push 0x7f
lea ecx, [ebp - 0x1c]
call fcn.0040a60b
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x1c]
push eax
mov word [ebp - 0x12], di
call fcn.0040a4b1
xor esi, esi
lea ecx, [ebp - 0x2c]
call fcn.0040989f
lea ecx, [ebp - 0x1c]
call fcn.0041cfcc
pop edi
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
inc edi
jmp 0x409ee0
cmp esi, 0x5a
ja 0x409f22
jmp 0x40a120
push dword [ebp + 0x10]
call fcn.00409e5a
test eax, eax
js 0x44f878
xor eax, eax
lea ecx, [ebp - 0x1c]
cmp word [ebp - 0x10], 0x24
sete al
add eax, 0x32
push eax
call fcn.0040a60b
inc edi
lea ecx, [ebp - 0x2c]
mov dword [ebp - 8], edi
call fcn.0040a6d3
movzx ebx, word [ebx + edi*2]
mov esi, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x28]
lea esp, [esp]
cmp bx, 0x5a
jbe 0x40a0c4
cmp bx, 0x61
jb 0x40a0cc
cmp bx, 0x7a
ja 0x40a0cc
mov edx, dword [esi]
cmp edx, 1
jg 0x44f7cf
xor al, al
test al, al
jne 0x44f7d6
lea eax, [ecx + 1]
push eax
lea ecx, [ebp - 0x2c]
call fcn.0040a597
mov esi, dword [ebp - 0x20]
mov eax, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x28]
xor edx, edx
mov word [eax + ecx*2], bx
inc ecx
inc edi
mov dword [ebp - 0x28], ecx
mov word [eax + ecx*2], dx
mov eax, dword [ebp + 0xc]
movzx ebx, word [eax + edi*2]
jmp 0x40a070
cmp bx, 0x41
jae 0x40a082
jmp 0x40a076
cmp bx, 0x30
jae 0x40a141
cmp bx, 0x5f
je 0x40a082
mov dword [ebp - 8], edi
test ecx, ecx
je 0x40a415
lea ecx, [ebp - 0x2c]
call fcn.0040aed9
push dword [ebp - 0x28]
push dword [ebp - 0x2c]
call dword [sym.imp.USER32.dll_CharUpperBuffW]
lea eax, [ebp - 0x2c]
push eax
lea ecx, [ebp - 0x1c]
call fcn.0040a683
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x1c]
push eax
call fcn.0040a4b1
mov ebx, dword [ebp + 0xc]
jmp 0x409fd7
cmp esi, 0x7a
ja 0x409f2b
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 8]
push eax
push ebx
call fcn.004048c8
cmp dword [ebp - 0x1c], 0xffffffff
jne 0x409fc8
jmp 0x44f848
cmp bx, 0x39
ja 0x40a0d2
jmp 0x40a082
inc edi
mov dword [ebp - 8], edi
cmp word [ebx + edi*2], 0x3d
je 0x44f7c5
mov eax, 0x41
push eax
lea ecx, [ebp - 0x1c]
call fcn.0040a60b
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x1c]
push eax
call fcn.0040a4b1
jmp 0x409fd7
push 0x4e
lea ecx, [ebp - 0x1c]
call fcn.0040a60b
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x1c]
push eax
call fcn.0040a4b1
inc edi
mov dword [ebp - 8], edi
jmp 0x409fd7
push 0x47
lea ecx, [ebp - 0x1c]
call fcn.0040a60b
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x1c]
push eax
call fcn.0040a4b1
inc edi
mov dword [ebp - 8], edi
jmp 0x409fd7
push 0x48
lea ecx, [ebp - 0x1c]
call fcn.0040a60b
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x1c]
push eax
call fcn.0040a4b1
inc edi
mov dword [ebp - 8], edi
jmp 0x409fd7
push 0x40
lea ecx, [ebp - 0x1c]
call fcn.0040a60b
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x1c]
push eax
call fcn.0040a4b1
inc edi
mov dword [ebp - 8], edi
jmp 0x409fd7
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 8]
push eax
push ebx
push dword [ebp + 8]
call fcn.00404850
lea ecx, [ebp - 0x1c]
test eax, eax
js 0x44f863
push 0x36
call fcn.0040a60b
lea eax, [ebp - 0x2c]
push eax
lea ecx, [ebp - 0x1c]
call fcn.0040a683
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x1c]
push eax
call fcn.0040a4b1
mov edi, dword [ebp - 8]
jmp 0x409fd7
push 0x4d
lea ecx, [ebp - 0x1c]
call fcn.0040a60b
inc edi
mov dword [ebp - 8], edi
cmp word [ebx + edi*2], 0x3d
jne 0x409fcb
push 0x56
jmp 0x40a271
push 0x49
lea ecx, [ebp - 0x1c]
call fcn.0040a60b
inc edi
mov dword [ebp - 8], edi
cmp word [ebx + edi*2], 0x3d
jne 0x409fcb
push 0x52
inc edi
lea ecx, [ebp - 0x1c]
mov dword [ebp - 8], edi
call fcn.0040a60b
jmp 0x409fcb
push 0x4c
lea ecx, [ebp - 0x1c]
call fcn.0040a60b
inc edi
mov dword [ebp - 8], edi
cmp word [ebx + edi*2], 0x3d
jne 0x409fcb
inc edi
lea ecx, [ebp - 0x1c]
push 0x55
mov dword [ebp - 8], edi
call fcn.0040a60b
jmp 0x409fcb
push 0x4b
lea ecx, [ebp - 0x1c]
call fcn.0040a60b
inc edi
mov dword [ebp - 8], edi
cmp word [ebx + edi*2], 0x3d
jne 0x409fcb
jmp 0x44f733
push 0x4a
lea ecx, [ebp - 0x1c]
call fcn.0040a60b
inc edi
mov dword [ebp - 8], edi
cmp word [ebx + edi*2], 0x3d
jne 0x409fcb
jmp 0x44f72c
inc edi
mov dword [ebp - 8], edi
cmp word [ebx + edi*2], 0x3d
je 0x40a35f
mov eax, 0x42
jmp 0x40a160
movzx eax, word [ebx + edi*2 + 2]
inc edi
mov dword [ebp - 8], edi
sub eax, 0x3d
je 0x40a3ff
sub eax, 1
je 0x40a36d
mov eax, 0x43
jmp 0x40a160
mov ax, word [ebp - 0x14]
cmp ax, 5
jne 0x44f71d
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x18]
neg ecx
mov edi, dword [ebp - 8]
mov dword [ebp - 0x1c], ecx
adc eax, 0
mov ecx, dword [ebp + 0x10]
neg eax
mov dword [ebp - 0x18], eax
mov eax, dword [ecx + 4]
mov ecx, dword [ebp - 0xc]
mov eax, dword [eax + ecx*4 - 4]
mov ecx, 0x49
mov word [eax + 8], cx
jmp 0x409fcb
mov eax, 0x45
inc edi
mov dword [ebp - 8], edi
jmp 0x40a160
inc edi
mov eax, 0x44
mov dword [ebp - 8], edi
jmp 0x40a160
mov edi, dword [ebp - 8]
cmp esi, 0x2e
jne 0x409f19
inc edi
lea ecx, [ebp - 0x2c]
mov dword [ebp - 8], edi
call fcn.0040a6d3
movzx eax, word [ebx + edi*2]
cmp ax, 0x5a
jbe 0x40a3b5
cmp ax, 0x61
jb 0x40a3bd
cmp ax, 0x7a
ja 0x40a3bd
push eax
lea ecx, [ebp - 0x2c]
call fcn.004049bd
inc edi
jmp 0x40a393
cmp ax, 0x41
jae 0x40a3a9
jmp 0x40a39d
cmp ax, 0x30
jae 0x40a40d
cmp ax, 0x5f
je 0x40a3a9
cmp ax, 0x7f
ja 0x40a3a9
cmp dword [ebp - 0x28], 0
mov dword [ebp - 8], edi
je 0x40a415
push 0x35
lea ecx, [ebp - 0x1c]
call fcn.0040a60b
lea eax, [ebp - 0x2c]
push eax
lea ecx, [ebp - 0x1c]
call fcn.0040a683
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x1c]
push eax
call fcn.0040a4b1
jmp 0x409fd7
inc edi
mov eax, 0x46
mov dword [ebp - 8], edi
jmp 0x40a160
cmp ax, 0x39
jbe 0x40a3a9
jmp 0x40a3c3
lea eax, [edi - 1]
push eax
jmp 0x44f879
cmp ax, 0x10
jne 0x409fc8
jmp 0x40a32e
push 0x53
jmp 0x40a271
push 0x54
jmp 0x40a271
push 0x51
lea ecx, [ebp - 0x1c]
call fcn.0040a60b
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x1c]
push eax
call fcn.0040a4b1
inc edi
mov dword [ebp - 8], edi
jmp 0x409fd7
push 0x57
lea ecx, [ebp - 0x1c]
call fcn.0040a60b
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x1c]
push eax
call fcn.0040a4b1
inc edi
mov dword [ebp - 8], edi
jmp 0x409fd7
push 0x58
lea ecx, [ebp - 0x1c]
call fcn.0040a60b
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x1c]
push eax
call fcn.0040a4b1
inc edi
mov dword [ebp - 8], edi
jmp 0x409fd7
test edi, edi
jne case.0x409f5b.27
cmp word [ebx + 2], di
jne case.0x409f5b.27
mov eax, dword [ebp + 8]
cmp eax, dword [0x4d23a0]
jl case.0x409f5b.27
mov edi, 1
mov dword [ebp - 8], edi
jmp 0x409fd7
mov eax, 0x50
jmp 0x40a364
mov al, 1
jmp 0x40a08f
lea eax, [edx - 1]
push 4
mov dword [esi], eax
call fcn.0041fe2b
mov dword [ebp - 0x10], eax
add esp, 4
mov dword [ebp - 0x20], eax
mov dword [eax], 1
mov eax, dword [ebp - 0x28]
add eax, 2
jne 0x44f800
mov eax, 8
jmp 0x44f806
add eax, 7
and eax, 0xfffffff8
xor ecx, ecx
mov dword [ebp - 0x24], eax
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0041fe5b
mov esi, eax
add esp, 4
mov eax, dword [ebp - 0x28]
lea ecx, [eax*2 + 2]
push ecx
push dword [ebp - 0x2c]
push esi
call fcn.00420e70
mov eax, esi
add esp, 0xc
mov esi, dword [ebp - 0x10]
mov dword [ebp - 0x2c], eax
jmp 0x40a0a9
push dword [ebp - 8]
push 0x138c
jmp 0x44f87e
push edi
push 0x1388
push dword [ebp + 8]
call fcn.004697b2
lea ecx, [ebp - 0x1c]
push 0x7f
call fcn.0040a60b
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x1c]
push eax
call fcn.0040a4b1
jmp 0x44f886
push edi
push 0x138b
push dword [ebp + 8]
call fcn.004697b2
or esi, 0xffffffff
jmp 0x409ffe