Function at 0x40d0b0
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x30
push ebx
push esi
or eax, 0xffffffff
push edi
mov word [ebp - 0x18], ax
xor eax, eax
xor esi, esi
push 0x64
lea ecx, [ebp - 0x30]
mov dword [ebp - 8], esi
mov word [ebp - 0x16], ax
call fcn.0040626b
mov ecx, dword [ebp + 0x10]
call fcn.00407140
mov ebx, dword [ebp + 0xc]
cmp word [ebx], si
je 0x40d2dd
lea esp, [esp]
movzx eax, word [ebx + esi*2]
cmp eax, 0x20
je 0x40d18e
cmp eax, 9
je 0x40d18e
movzx eax, word [ebx + esi*2]
mov dword [ebp - 8], esi
test ax, ax
je 0x40d2dd
mov edi, eax
mov word [ebp - 0x16], si
cmp edi, 0x30
jae 0x40d194
cmp edi, 0x2e
je 0x40d199
cmp edi, 0x41
jae 0x40d1f1
cmp edi, 0x61
jae 0x40d314
cmp edi, 0x5f
je 0x40d31d
mov eax, edi
cmp eax, 0x24
je case.0x40d168.64
cmp eax, 0x3d
je 0x40d359
sub eax, 0x1a
cmp eax, 0x44
ja case.0x40d168.27
movzx eax, byte [eax + 0x40d6f4]
jmp dword [eax*4 + 0x40d6a8]
push 0x4f
lea ecx, [ebp - 0x20]
call fcn.0040d839
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x20]
push eax
call fcn.0040d739
inc esi
mov dword [ebp - 8], esi
jmp 0x40d2d2
inc esi
jmp 0x40d0f0
cmp edi, 0x39
ja 0x40d121
mov eax, dword [ebp + 0x10]
mov esi, 0x40
mov ecx, dword [eax + 8]
mov dword [ebp + 0xc], ecx
test ecx, ecx
je 0x40d1b6
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.00409c1a
cmp al, 1
jne 0x40d615
mov edx, dword [ebp + 0x10]
cmp si, 0x4a
je 0x40d5b1
lea eax, [ebp - 0x20]
push eax
mov ecx, edx
call fcn.0040d739
mov esi, dword [ebp - 8]
jmp 0x40d2d2
cmp edi, 0x5a
ja 0x40d12f
jmp 0x40d31d
push dword [ebp + 0x10]
call fcn.0040d079
test eax, eax
js 0x40d6a2
cmp edi, 0x24
jne 0x40d569
mov eax, 0x33
push eax
lea ecx, [ebp - 0x20]
call fcn.0040d839
inc esi
lea ecx, [ebp - 0x30]
mov dword [ebp - 8], esi
call fcn.0040d90b
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 0x40d284
cmp di, 0x61
jb 0x40d28c
cmp di, 0x7a
ja 0x40d28c
mov ecx, dword [ebp - 0x24]
mov eax, dword [ecx]
cmp eax, 1
jg 0x473c73
mov eax, dword [ebp - 0x2c]
lea ecx, [eax + 2]
cmp edx, ecx
jb 0x40d4d8
mov ecx, dword [ebp + 0xc]
mov word [ecx + eax*2], di
inc eax
xor edi, edi
inc esi
mov dword [ebp - 0x2c], eax
mov word [ecx + eax*2], di
mov dword [ebp - 8], esi
jmp 0x40d23b
cmp di, 0x41
jae 0x40d251
jmp 0x40d245
cmp di, 0x30
jae 0x40d34a
cmp di, 0x5f
je 0x40d251
cmp dword [ebp - 0x2c], 0
je 0x40d699
lea ecx, [ebp - 0x30]
call fcn.0040da5a
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.0040d8b1
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x20]
push eax
call fcn.0040d739
cmp word [ebx + esi*2], 0
jne 0x40d0f0
push 0x7f
lea ecx, [ebp - 0x20]
call fcn.0040d839
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x20]
push eax
mov word [ebp - 0x16], si
call fcn.0040d739
xor esi, esi
lea ecx, [ebp - 0x30]
call fcn.0040126c
lea ecx, [ebp - 0x20]
call fcn.0041e193
pop edi
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
cmp edi, 0x7a
ja 0x40d138
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 8]
push eax
push ebx
call fcn.00409eac
cmp dword [ebp - 0x20], 0xffffffff
je 0x473db2
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x20]
push eax
call fcn.0040d739
mov esi, dword [ebp - 8]
jmp 0x40d2d2
cmp di, 0x39
ja 0x40d296
jmp 0x40d251
inc esi
mov dword [ebp - 8], esi
cmp word [ebx + esi*2], 0x3d
lea ecx, [ebp - 0x20]
je 0x473c63
push 0x41
call fcn.0040d839
jmp 0x40d2c6
push 0x4e
lea ecx, [ebp - 0x20]
call fcn.0040d839
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x20]
push eax
call fcn.0040d739
inc esi
mov dword [ebp - 8], esi
jmp 0x40d2d2
push 0x47
lea ecx, [ebp - 0x20]
call fcn.0040d839
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x20]
push eax
call fcn.0040d739
inc esi
mov dword [ebp - 8], esi
jmp 0x40d2d2
push 0x48
lea ecx, [ebp - 0x20]
call fcn.0040d839
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x20]
push eax
call fcn.0040d739
inc esi
mov dword [ebp - 8], esi
jmp 0x40d2d2
push 0x40
lea ecx, [ebp - 0x20]
call fcn.0040d839
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x20]
push eax
call fcn.0040d739
inc esi
mov dword [ebp - 8], esi
jmp 0x40d2d2
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 8]
push eax
push ebx
push dword [ebp + 8]
call fcn.00409e33
lea ecx, [ebp - 0x20]
test eax, eax
js 0x473ddb
push 0x36
call fcn.0040d839
lea eax, [ebp - 0x30]
push eax
lea ecx, [ebp - 0x20]
call fcn.0040d8b1
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x20]
push eax
call fcn.0040d739
mov esi, dword [ebp - 8]
jmp 0x40d2d2
push 0x4d
lea ecx, [ebp - 0x20]
call fcn.0040d839
inc esi
mov dword [ebp - 8], esi
cmp word [ebx + esi*2], 0x3d
jne 0x40d2c6
inc esi
push 0x56
lea ecx, [ebp - 0x20]
mov dword [ebp - 8], esi
call fcn.0040d839
jmp 0x40d2c6
push 0x49
lea ecx, [ebp - 0x20]
call fcn.0040d839
inc esi
mov dword [ebp - 8], esi
cmp word [ebx + esi*2], 0x3d
jne 0x40d2c6
inc esi
push 0x52
lea ecx, [ebp - 0x20]
mov dword [ebp - 8], esi
call fcn.0040d839
jmp 0x40d2c6
push 0x4c
lea ecx, [ebp - 0x20]
call fcn.0040d839
inc esi
mov dword [ebp - 8], esi
cmp word [ebx + esi*2], 0x3d
jne 0x40d2c6
inc esi
push 0x55
lea ecx, [ebp - 0x20]
mov dword [ebp - 8], esi
call fcn.0040d839
jmp 0x40d2c6
push 0x4b
lea ecx, [ebp - 0x20]
call fcn.0040d839
inc esi
mov dword [ebp - 8], esi
cmp word [ebx + esi*2], 0x3d
jne 0x40d2c6
jmp 0x473bc5
cmp ecx, 0x41c2
jae 0x473cd3
add ecx, ecx
push ecx
call fcn.0040a06b
xor ecx, ecx
mov dword [ebp - 0x28], eax
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0041f03d
mov edx, dword [ebp + 0xc]
add esp, 4
mov dword [ebp - 8], eax
test edx, edx
je 0x40d538
mov eax, dword [ebp - 0x2c]
lea ecx, [eax*2 + 2]
push ecx
push edx
push dword [ebp - 8]
call fcn.0041f050
mov edx, dword [ebp + 0xc]
add esp, 0xc
push edx
call fcn.00420fb0
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 0x40d270
push 0x4a
lea ecx, [ebp - 0x20]
call fcn.0040d839
inc esi
mov dword [ebp - 8], esi
cmp word [ebx + esi*2], 0x3d
jne 0x40d2c6
jmp 0x473bb2
mov eax, 0x32
jmp 0x40d21d
inc esi
mov dword [ebp - 8], esi
cmp word [ebx + esi*2], 0x3d
lea ecx, [ebp - 0x20]
je 0x40d5f5
push 0x42
call fcn.0040d839
jmp 0x40d2c6
movzx eax, word [ebx + esi*2 + 2]
inc esi
mov dword [ebp - 8], esi
lea ecx, [ebp - 0x20]
sub eax, 0x3d
je 0x40d681
dec eax
je 0x40d605
push 0x43
call fcn.0040d839
jmp 0x40d2c6
cmp word [ebp - 0x18], 5
jne 0x40d1de
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x1c]
neg ecx
adc eax, 0
neg eax
mov dword [ebp - 0x20], ecx
mov ecx, dword [ebp + 0xc]
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
lea eax, [ebp - 0x20]
push eax
mov ecx, edx
call fcn.0040d739
mov esi, dword [ebp - 8]
jmp 0x40d2d2
push 0x45
call fcn.0040d839
inc esi
mov dword [ebp - 8], esi
jmp 0x40d2c6
push 0x44
call fcn.0040d839
inc esi
mov dword [ebp - 8], esi
jmp 0x40d2c6
mov esi, dword [ebp - 8]
cmp edi, 0x2e
jne 0x40d126
inc esi
lea ecx, [ebp - 0x30]
mov dword [ebp - 8], esi
call fcn.0040d90b
movzx eax, word [ebx + esi*2]
cmp ax, 0x5a
jbe 0x40d64f
cmp ax, 0x61
jb 0x40d657
cmp ax, 0x7a
ja 0x40d657
push eax
lea ecx, [ebp - 0x30]
call fcn.00409fa0
inc esi
jmp 0x40d62d
cmp ax, 0x41
jae 0x40d643
jmp 0x40d637
cmp ax, 0x30
jae 0x40d691
cmp ax, 0x5f
je 0x40d643
cmp ax, 0x7f
ja 0x40d643
cmp dword [ebp - 0x2c], 0
mov dword [ebp - 8], esi
je 0x40d699
push 0x35
lea ecx, [ebp - 0x20]
call fcn.0040d839
jmp 0x40d2ba
push 0x46
call fcn.0040d839
inc esi
mov dword [ebp - 8], esi
jmp 0x40d2c6
cmp ax, 0x39
jbe 0x40d643
jmp 0x40d65d
lea eax, [esi - 1]
push eax
jmp 0x473df6
push esi
jmp 0x473df6
inc esi
push 0x53
lea ecx, [ebp - 0x20]
mov dword [ebp - 8], esi
call fcn.0040d839
jmp 0x40d2c6
inc esi
push 0x54
lea ecx, [ebp - 0x20]
mov dword [ebp - 8], esi
call fcn.0040d839
jmp 0x40d2c6
push 0x51
lea ecx, [ebp - 0x20]
call fcn.0040d839
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x20]
push eax
call fcn.0040d739
inc esi
mov dword [ebp - 8], esi
jmp 0x40d2d2
push 0x57
lea ecx, [ebp - 0x20]
call fcn.0040d839
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x20]
push eax
call fcn.0040d739
inc esi
mov dword [ebp - 8], esi
jmp 0x40d2d2
push 0x58
lea ecx, [ebp - 0x20]
call fcn.0040d839
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x20]
push eax
call fcn.0040d739
inc esi
mov dword [ebp - 8], esi
jmp 0x40d2d2
test esi, esi
jne case.0x40d168.27
cmp word [ebx + 2], si
jne case.0x40d168.27
mov eax, dword [ebp + 8]
cmp eax, dword [0x4c2110]
jl case.0x40d168.27
mov esi, 1
mov dword [ebp - 8], esi
jmp 0x40d2d2
push 0x50
call fcn.0040d839
inc esi
mov dword [ebp - 8], esi
jmp 0x40d2c6
dec eax
mov dword [ecx], eax
lea ecx, [ebp - 0x30]
call fcn.004029f3
mov eax, dword [ebp - 0x2c]
add eax, 2
push eax
call fcn.0040a06b
xor ecx, ecx
mov dword [ebp - 0x28], eax
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0041f6ba
mov edx, eax
mov eax, dword [ebp - 0x2c]
add esp, 4
lea ecx, [eax*2 + 2]
push ecx
push dword [ebp - 0x30]
mov dword [ebp + 0xc], edx
push edx
call fcn.0041f050
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x28]
add esp, 0xc
mov dword [ebp - 0x30], ecx
jmp 0x40d270
cmp ecx, 0x2000000
jae 0x473d20
mov dword [ebp + 0xc], ecx
fild dword [ebp + 0xc]
test ecx, ecx
jns 0x473ceb
fadd qword [0x4b6a10]
fstp qword [ebp - 0x14]
fld qword [ebp - 0x14]
mov edx, dword [ebp - 0x30]
fmul qword [0x4b26e0]
mov esi, dword [ebp - 8]
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 dword [ebp + 0xc], edx
jmp 0x40d4e6
cmp ecx, 0x8000000
jae 0x473d6d
mov dword [ebp + 0xc], ecx
fild dword [ebp + 0xc]
test ecx, ecx
jns 0x473d38
fadd qword [0x4b6a10]
fstp qword [ebp - 0x14]
fld qword [ebp - 0x14]
mov edx, dword [ebp - 0x30]
fmul qword [0x4b26d8]
mov esi, dword [ebp - 8]
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 dword [ebp + 0xc], edx
jmp 0x40d4e6
mov dword [ebp + 0xc], ecx
fild dword [ebp + 0xc]
test ecx, ecx
jns 0x473d7d
fadd qword [0x4b6a10]
fstp qword [ebp - 0x14]
fld qword [ebp - 0x14]
mov edx, dword [ebp - 0x30]
fmul qword [0x4b26d0]
mov esi, dword [ebp - 8]
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 dword [ebp + 0xc], edx
jmp 0x40d4e6
push dword [ebp - 8]
push 0x138c
push dword [ebp + 8]
call fcn.00442459
or esi, 0xffffffff
jmp 0x40d2f9
push esi
push 0x1388
push dword [ebp + 8]
call fcn.00442459
lea ecx, [ebp - 0x20]
push 0x7f
call fcn.0040d839
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x20]
push eax
call fcn.0040d739
or esi, 0xffffffff
jmp 0x40d2f9
push 0x138b
push dword [ebp + 8]
call fcn.00442459
or esi, 0xffffffff
jmp 0x40d2f9