Function at 0x4120e0
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x30
push ebx
push esi
or eax, 0xffffffff
lea ecx, [ebp - 0x30]
push edi
mov word [ebp - 0x18], ax
xor esi, esi
xor eax, eax
mov dword [ebp - 8], esi
push 0x64
mov word [ebp - 0x16], ax
call fcn.0041162d
mov ecx, dword [ebp + 0x10]
call fcn.004133b0
mov ebx, dword [ebp + 0xc]
cmp word [ebx], si
je 0x41230d
lea esp, [esp]
movzx eax, word [ebx + esi*2]
cmp eax, 0x20
je 0x41221b
cmp eax, 9
je 0x41221b
movzx eax, word [ebx + esi*2]
mov dword [ebp - 8], esi
test ax, ax
je 0x41230d
mov edi, eax
mov word [ebp - 0x16], si
cmp edi, 0x30
jae 0x4121be
cmp edi, 0x2e
je 0x4121c3
cmp edi, 0x41
jae 0x412221
cmp edi, 0x61
jae 0x41234c
cmp edi, 0x5f
je 0x412355
mov eax, edi
cmp eax, 0x24
je case.0x412198.64
cmp eax, 0x3d
je 0x412391
sub eax, 0x1a
cmp eax, 0x44
ja case.0x412198.27
movzx eax, byte [eax + 0x412714]
jmp dword [eax*4 + 0x4126c8]
push 0x4f
lea ecx, [ebp - 0x20]
call fcn.00413613
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x20]
push eax
call fcn.0041343f
inc esi
mov dword [ebp - 8], esi
jmp 0x412302
cmp edi, 0x39
ja 0x412151
mov eax, dword [ebp + 0x10]
mov esi, 0x40
mov ecx, dword [eax + 8]
mov dword [ebp + 0xc], ecx
test ecx, ecx
je 0x4121e0
mov eax, dword [eax + 4]
mov eax, dword [eax + ecx*4 - 4]
movzx esi, word [eax + 8]
push esi
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 8]
push eax
push ebx
call fcn.00411e05
cmp al, 1
jne 0x41263f
mov edx, dword [ebp + 0x10]
cmp si, 0x4a
je 0x4125e9
lea eax, [ebp - 0x20]
mov ecx, edx
push eax
call fcn.0041343f
mov esi, dword [ebp - 8]
jmp 0x412302
inc esi
jmp 0x412120
cmp edi, 0x5a
ja 0x41215f
jmp 0x412355
push dword [ebp + 0x10]
call fcn.00411cd9
test eax, eax
js 0x4126c0
cmp edi, 0x24
jne 0x412583
mov eax, 0x33
push eax
lea ecx, [ebp - 0x20]
call fcn.00413613
inc esi
lea ecx, [ebp - 0x30]
mov dword [ebp - 8], esi
call fcn.004119e1
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp - 0x28]
mov dword [ebp + 0xc], eax
movzx edi, word [ebx + esi*2]
cmp di, 0x5a
jbe 0x4122b4
cmp di, 0x61
jb 0x4122bc
cmp di, 0x7a
ja 0x4122bc
mov ecx, dword [ebp - 0x24]
mov eax, dword [ecx]
cmp eax, 1
jg 0x44f6d4
mov eax, dword [ebp - 0x2c]
lea ecx, [eax + 2]
cmp edx, ecx
jb 0x412510
mov ecx, dword [ebp + 0xc]
mov word [ecx + eax*2], di
inc eax
xor edi, edi
mov dword [ebp - 0x2c], eax
inc esi
mov dword [ebp - 8], esi
mov word [ecx + eax*2], di
jmp 0x41226b
cmp di, 0x41
jae 0x412281
jmp 0x412275
cmp di, 0x30
jae 0x412382
cmp di, 0x5f
je 0x412281
cmp dword [ebp - 0x2c], 0
je 0x4126b7
lea ecx, [ebp - 0x30]
call fcn.00411aa4
push dword [ebp - 0x2c]
push dword [ebp - 0x30]
call dword [sym.imp.USER32.dll_CharUpperBuffW]
lea eax, [ebp - 0x30]
push eax
lea ecx, [ebp - 0x20]
call fcn.004135b9
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x20]
push eax
call fcn.0041343f
cmp word [ebx + esi*2], 0
jne 0x412120
push 0x7f
lea ecx, [ebp - 0x20]
call fcn.00413613
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x20]
push eax
mov word [ebp - 0x16], si
call fcn.0041343f
xor esi, esi
lea ecx, [ebp - 0x30]
call fcn.00411cb6
lea ecx, [ebp - 0x20]
call fcn.0041368b
test al, al
jne 0x44f840
pop edi
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
cmp edi, 0x7a
ja 0x412168
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 8]
push eax
push ebx
call fcn.00411d0b
cmp dword [ebp - 0x20], 0xffffffff
je 0x44f7fb
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x20]
push eax
call fcn.0041343f
mov esi, dword [ebp - 8]
jmp 0x412302
cmp di, 0x39
ja 0x4122c6
jmp 0x412281
inc esi
lea ecx, [ebp - 0x20]
mov dword [ebp - 8], esi
cmp word [ebx + esi*2], 0x3d
je 0x44f6c4
push 0x41
call fcn.00413613
jmp 0x4122f6
push 0x4e
lea ecx, [ebp - 0x20]
call fcn.00413613
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x20]
push eax
call fcn.0041343f
inc esi
mov dword [ebp - 8], esi
jmp 0x412302
push 0x47
lea ecx, [ebp - 0x20]
call fcn.00413613
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x20]
push eax
call fcn.0041343f
inc esi
mov dword [ebp - 8], esi
jmp 0x412302
push 0x48
lea ecx, [ebp - 0x20]
call fcn.00413613
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x20]
push eax
call fcn.0041343f
inc esi
mov dword [ebp - 8], esi
jmp 0x412302
push 0x40
lea ecx, [ebp - 0x20]
call fcn.00413613
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x20]
push eax
call fcn.0041343f
inc esi
mov dword [ebp - 8], esi
jmp 0x412302
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 8]
push eax
push ebx
push dword [ebp + 8]
call fcn.00412058
lea ecx, [ebp - 0x20]
test eax, eax
js 0x44f816
push 0x36
call fcn.00413613
lea eax, [ebp - 0x30]
push eax
lea ecx, [ebp - 0x20]
call fcn.004135b9
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x20]
push eax
call fcn.0041343f
mov esi, dword [ebp - 8]
jmp 0x412302
push 0x4d
lea ecx, [ebp - 0x20]
call fcn.00413613
inc esi
mov dword [ebp - 8], esi
cmp word [ebx + esi*2], 0x3d
jne 0x4122f6
inc esi
lea ecx, [ebp - 0x20]
push 0x56
mov dword [ebp - 8], esi
call fcn.00413613
jmp 0x4122f6
push 0x49
lea ecx, [ebp - 0x20]
call fcn.00413613
inc esi
mov dword [ebp - 8], esi
cmp word [ebx + esi*2], 0x3d
jne 0x4122f6
inc esi
lea ecx, [ebp - 0x20]
push 0x52
mov dword [ebp - 8], esi
call fcn.00413613
jmp 0x4122f6
push 0x4c
lea ecx, [ebp - 0x20]
call fcn.00413613
inc esi
mov dword [ebp - 8], esi
cmp word [ebx + esi*2], 0x3d
jne 0x4122f6
inc esi
lea ecx, [ebp - 0x20]
push 0x55
mov dword [ebp - 8], esi
call fcn.00413613
jmp 0x4122f6
push 0x4b
lea ecx, [ebp - 0x20]
call fcn.00413613
inc esi
mov dword [ebp - 8], esi
cmp word [ebx + esi*2], 0x3d
jne 0x4122f6
jmp 0x44f626
cmp ecx, 0x41c2
jae 0x44f734
add ecx, ecx
push ecx
call fcn.00411c65
xor ecx, ecx
mov dword [ebp - 0x28], eax
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00420ec5
mov edx, dword [ebp + 0xc]
add esp, 4
mov dword [ebp - 8], eax
test edx, edx
je 0x412570
mov eax, dword [ebp - 0x2c]
lea ecx, [eax*2 + 2]
push ecx
push edx
push dword [ebp - 8]
call fcn.00420fa0
mov edx, dword [ebp + 0xc]
add esp, 0xc
push edx
call fcn.00422fd0
mov eax, dword [ebp - 8]
add esp, 4
mov edx, dword [ebp - 0x28]
mov ecx, eax
mov eax, dword [ebp - 0x2c]
mov dword [ebp + 0xc], ecx
mov dword [ebp - 0x30], ecx
jmp 0x4122a0
mov eax, 0x32
jmp 0x41224d
push 0x4a
lea ecx, [ebp - 0x20]
call fcn.00413613
inc esi
mov dword [ebp - 8], esi
cmp word [ebx + esi*2], 0x3d
jne 0x4122f6
jmp 0x44f613
inc esi
lea ecx, [ebp - 0x20]
mov dword [ebp - 8], esi
cmp word [ebx + esi*2], 0x3d
je 0x41261f
push 0x42
call fcn.00413613
jmp 0x4122f6
movzx eax, word [ebx + esi*2 + 2]
lea ecx, [ebp - 0x20]
inc esi
mov dword [ebp - 8], esi
sub eax, 0x3d
je 0x4126ab
dec eax
je 0x41262f
push 0x43
call fcn.00413613
jmp 0x4122f6
cmp word [ebp - 0x18], 5
jne 0x412208
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x1c]
neg ecx
mov dword [ebp - 0x20], ecx
mov ecx, dword [ebp + 0xc]
adc eax, 0
neg eax
mov dword [ebp - 0x1c], eax
mov eax, dword [edx + 4]
mov eax, dword [eax + ecx*4 - 4]
mov ecx, 0x49
mov word [eax + 8], cx
jmp 0x412208
push 0x45
call fcn.00413613
inc esi
mov dword [ebp - 8], esi
jmp 0x4122f6
push 0x44
call fcn.00413613
inc esi
mov dword [ebp - 8], esi
jmp 0x4122f6
mov esi, dword [ebp - 8]
cmp edi, 0x2e
jne 0x412156
inc esi
lea ecx, [ebp - 0x30]
mov dword [ebp - 8], esi
call fcn.004119e1
movzx eax, word [ebx + esi*2]
cmp ax, 0x5a
jbe 0x412679
cmp ax, 0x61
jb 0x412681
cmp ax, 0x7a
ja 0x412681
push eax
lea ecx, [ebp - 0x30]
call fcn.0041153b
inc esi
jmp 0x412657
cmp ax, 0x41
jae 0x41266d
jmp 0x412661
cmp ax, 0x30
jae 0x4126af
cmp ax, 0x5f
je 0x41266d
cmp ax, 0x7f
ja 0x41266d
cmp dword [ebp - 0x2c], 0
mov dword [ebp - 8], esi
je 0x4126b7
push 0x35
lea ecx, [ebp - 0x20]
call fcn.00413613
jmp 0x4122ea
push 0x46
jmp 0x412631
cmp ax, 0x39
jbe 0x41266d
jmp 0x412687
lea eax, [esi - 1]
push eax
jmp 0x44f82b
push esi
jmp 0x44f82b
inc esi
lea ecx, [ebp - 0x20]
push 0x53
mov dword [ebp - 8], esi
call fcn.00413613
jmp 0x4122f6
inc esi
lea ecx, [ebp - 0x20]
push 0x54
mov dword [ebp - 8], esi
call fcn.00413613
jmp 0x4122f6
push 0x51
lea ecx, [ebp - 0x20]
call fcn.00413613
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x20]
push eax
call fcn.0041343f
inc esi
mov dword [ebp - 8], esi
jmp 0x412302
push 0x57
lea ecx, [ebp - 0x20]
call fcn.00413613
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x20]
push eax
call fcn.0041343f
inc esi
mov dword [ebp - 8], esi
jmp 0x412302
push 0x58
lea ecx, [ebp - 0x20]
call fcn.00413613
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x20]
push eax
call fcn.0041343f
inc esi
mov dword [ebp - 8], esi
jmp 0x412302
test esi, esi
jne case.0x412198.27
cmp word [ebx + 2], si
jne case.0x412198.27
mov eax, dword [ebp + 8]
cmp eax, dword [0x4c72a0]
jl case.0x412198.27
mov esi, 1
mov dword [ebp - 8], esi
jmp 0x412302
push 0x50
call fcn.00413613
inc esi
mov dword [ebp - 8], esi
jmp 0x4122f6
dec eax
mov dword [ecx], eax
lea ecx, [ebp - 0x30]
call fcn.00411c7e
mov eax, dword [ebp - 0x2c]
add eax, 2
push eax
call fcn.00411c65
xor ecx, ecx
mov dword [ebp - 0x28], eax
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00420f16
mov edx, eax
add esp, 4
mov eax, dword [ebp - 0x2c]
mov dword [ebp + 0xc], edx
lea ecx, [eax*2 + 2]
push ecx
push dword [ebp - 0x30]
push edx
call fcn.00420fa0
mov ecx, dword [ebp + 0xc]
add esp, 0xc
mov eax, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x28]
mov dword [ebp - 0x30], ecx
jmp 0x4122a0
cmp ecx, 0x2000000
jae 0x44f775
mov dword [ebp + 0xc], ecx
fild dword [ebp + 0xc]
test ecx, ecx
jns 0x44f74c
fadd qword [0x4bae48]
fstp qword [ebp - 0x14]
fld qword [ebp - 0x14]
fmul qword [0x4b6400]
fnstcw word [ebp + 0xe]
movzx eax, word [ebp + 0xe]
or eax, 0xc00
mov dword [ebp - 0x10], eax
fldcw word [ebp - 0x10]
fistp qword [ebp - 0x14]
mov ecx, dword [ebp - 0x14]
fldcw word [ebp + 0xe]
jmp 0x44f7ed
cmp ecx, 0x8000000
jae 0x44f7b6
mov dword [ebp + 0xc], ecx
fild dword [ebp + 0xc]
test ecx, ecx
jns 0x44f78d
fadd qword [0x4bae48]
fstp qword [ebp - 0x14]
fld qword [ebp - 0x14]
fmul qword [0x4b63f8]
fnstcw word [ebp + 0xe]
movzx eax, word [ebp + 0xe]
or eax, 0xc00
mov dword [ebp - 0x10], eax
fldcw word [ebp - 0x10]
fistp qword [ebp - 0x14]
mov ecx, dword [ebp - 0x14]
fldcw word [ebp + 0xe]
jmp 0x44f7ed
mov dword [ebp + 0xc], ecx
fild dword [ebp + 0xc]
test ecx, ecx
jns 0x44f7c6
fadd qword [0x4bae48]
fstp qword [ebp - 0x14]
fld qword [ebp - 0x14]
fmul qword [0x4b63f0]
fnstcw word [ebp + 0xe]
movzx eax, word [ebp + 0xe]
or eax, 0xc00
mov dword [ebp - 0x10], eax
fldcw word [ebp - 0x10]
fistp qword [ebp - 0x14]
mov ecx, dword [ebp - 0x14]
fldcw word [ebp + 0xe]
mov edx, dword [ebp - 0x30]
mov esi, dword [ebp - 8]
mov dword [ebp + 0xc], edx
jmp 0x41251e
push dword [ebp - 8]
push 0x138c
jmp 0x44f830
push esi
push 0x1388
push dword [ebp + 8]
call fcn.0045fe48
lea ecx, [ebp - 0x20]
push 0x7f
call fcn.00413613
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x20]
push eax
call fcn.0041343f
jmp 0x44f838
push 0x138b
push dword [ebp + 8]
call fcn.0045fe48
or esi, 0xffffffff
jmp 0x412329
mov ecx, dword [ebp - 0x20]
test ecx, ecx
je 0x412341
push ecx
call fcn.004115f4
jmp 0x412341