Function at 0x4ca310
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xf4
push ebx
push esi
push edi
lea edi, [ebp - 0xf4]
mov ecx, 0x3d
mov eax, 0xcccccccc
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 8]
movzx ecx, byte [eax]
mov dword [ebp - 0xf4], ecx
mov edx, dword [ebp - 0xf4]
sub edx, 9
mov dword [ebp - 0xf4], edx
cmp dword [ebp - 0xf4], 0x75
ja case.0x4ca363.2
mov eax, dword [ebp - 0xf4]
movzx ecx, byte [eax + 0x4cabc8]
jmp dword [ecx*4 + 0x4cab60]
mov dword [ebp - 8], 1
jmp 0x4ca37c
mov eax, dword [ebp - 8]
add eax, 1
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
add eax, dword [ebp - 8]
movzx ecx, byte [eax]
movzx edx, byte [ecx + 0x51a988]
and edx, 1
je 0x4ca393
jmp 0x4ca373
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x95
mov eax, dword [ebp - 8]
jmp 0x4cab49
mov eax, dword [ebp + 8]
movzx ecx, byte [eax + 1]
cmp ecx, 0x2d
jne 0x4ca3ed
mov dword [ebp - 8], 2
jmp 0x4ca3c2
mov eax, dword [ebp - 8]
add eax, 1
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
add eax, dword [ebp - 8]
movzx ecx, byte [eax]
mov dword [ebp - 0x14], ecx
cmp dword [ebp - 0x14], 0
je 0x4ca3dc
cmp dword [ebp - 0x14], 0xa
je 0x4ca3dc
jmp 0x4ca3b9
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x95
mov eax, dword [ebp - 8]
jmp 0x4cab49
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x57
mov eax, 1
jmp 0x4cab49
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x16
mov eax, 1
jmp 0x4cab49
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x17
mov eax, 1
jmp 0x4cab49
mov eax, dword [ebp + 0xc]
mov dword [eax], 1
mov eax, 1
jmp 0x4cab49
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x56
mov eax, 1
jmp 0x4cab49
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x58
mov eax, 1
jmp 0x4cab49
mov eax, dword [ebp + 8]
movzx ecx, byte [eax + 1]
cmp ecx, 0x2a
jne 0x4ca476
mov eax, dword [ebp + 8]
movzx ecx, byte [eax + 2]
test ecx, ecx
jne 0x4ca489
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x59
mov eax, 1
jmp 0x4cab49
mov dword [ebp - 8], 3
mov eax, dword [ebp + 8]
movzx ecx, byte [eax + 2]
mov dword [ebp - 0x14], ecx
jmp 0x4ca4a5
mov eax, dword [ebp - 8]
add eax, 1
mov dword [ebp - 8], eax
cmp dword [ebp - 0x14], 0x2a
jne 0x4ca4b9
mov eax, dword [ebp + 8]
add eax, dword [ebp - 8]
movzx ecx, byte [eax]
cmp ecx, 0x2f
je 0x4ca4cd
mov eax, dword [ebp + 8]
add eax, dword [ebp - 8]
movzx ecx, byte [eax]
mov dword [ebp - 0x14], ecx
cmp dword [ebp - 0x14], 0
je 0x4ca4cd
jmp 0x4ca49c
cmp dword [ebp - 0x14], 0
je 0x4ca4dc
mov eax, dword [ebp - 8]
add eax, 1
mov dword [ebp - 8], eax
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x95
mov eax, dword [ebp - 8]
jmp 0x4cab49
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x5a
mov eax, 1
jmp 0x4cab49
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x4c
mov eax, dword [ebp + 8]
movzx ecx, byte [eax + 1]
xor eax, eax
cmp ecx, 0x3d
sete al
add eax, 1
jmp 0x4cab49
mov eax, dword [ebp + 8]
movzx ecx, byte [eax + 1]
mov dword [ebp - 0x14], ecx
cmp dword [ebp - 0x14], 0x3d
jne 0x4ca545
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x4e
mov eax, 2
jmp 0x4cab49
cmp dword [ebp - 0x14], 0x3e
jne 0x4ca560
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x4b
mov eax, 2
jmp 0x4cab49
cmp dword [ebp - 0x14], 0x3c
jne 0x4ca57b
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x54
mov eax, 2
jmp 0x4cab49
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x4f
mov eax, 1
jmp 0x4cab49
mov eax, dword [ebp + 8]
movzx ecx, byte [eax + 1]
mov dword [ebp - 0x14], ecx
cmp dword [ebp - 0x14], 0x3d
jne 0x4ca5b3
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x50
mov eax, 2
jmp 0x4cab49
cmp dword [ebp - 0x14], 0x3e
jne 0x4ca5ce
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x55
mov eax, 2
jmp 0x4cab49
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x4d
mov eax, 1
jmp 0x4cab49
mov eax, dword [ebp + 8]
movzx ecx, byte [eax + 1]
cmp ecx, 0x3d
je 0x4ca602
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x94
mov eax, 2
jmp 0x4cab49
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x4b
mov eax, 2
jmp 0x4cab49
mov eax, dword [ebp + 8]
movzx ecx, byte [eax + 1]
cmp ecx, 0x7c
je 0x4ca636
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x53
mov eax, 1
jmp 0x4cab49
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x5b
mov eax, 2
jmp 0x4cab49
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x19
mov eax, 1
jmp 0x4cab49
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x52
mov eax, 1
jmp 0x4cab49
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x5d
mov eax, 1
jmp 0x4cab49
mov eax, dword [ebp + 8]
movzx ecx, byte [eax]
mov dword [ebp - 0x20], ecx
mov dword [ebp - 8], 1
jmp 0x4ca69d
mov eax, dword [ebp - 8]
add eax, 1
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
add eax, dword [ebp - 8]
movzx ecx, byte [eax]
mov dword [ebp - 0x14], ecx
cmp dword [ebp - 0x14], 0
je 0x4ca6d5
mov eax, dword [ebp - 0x14]
cmp eax, dword [ebp - 0x20]
jne 0x4ca6d3
mov eax, dword [ebp + 8]
add eax, dword [ebp - 8]
movzx ecx, byte [eax + 1]
cmp ecx, dword [ebp - 0x20]
jne 0x4ca6d1
mov eax, dword [ebp - 8]
add eax, 1
mov dword [ebp - 8], eax
jmp 0x4ca6d3
jmp 0x4ca6d5
jmp 0x4ca694
cmp dword [ebp - 0x14], 0x27
jne 0x4ca6f1
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x5e
mov eax, dword [ebp - 8]
add eax, 1
jmp 0x4cab49
cmp dword [ebp - 0x14], 0
je 0x4ca70d
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x1a
mov eax, dword [ebp - 8]
add eax, 1
jmp 0x4cab49
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x94
mov eax, dword [ebp - 8]
jmp 0x4cab49
mov eax, dword [ebp + 8]
movzx ecx, byte [eax + 1]
movzx edx, byte [ecx + 0x51a988]
and edx, 4
jne case.0x4ca363.39
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x76
mov eax, 1
jmp 0x4cab49
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x81
mov dword [ebp - 8], 0
jmp 0x4ca75f
mov eax, dword [ebp - 8]
add eax, 1
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
add eax, dword [ebp - 8]
movzx ecx, byte [eax]
movzx edx, byte [ecx + 0x51a988]
and edx, 4
je 0x4ca776
jmp 0x4ca756
mov eax, dword [ebp + 8]
add eax, dword [ebp - 8]
movzx ecx, byte [eax]
cmp ecx, 0x2e
jne 0x4ca7b6
mov eax, dword [ebp - 8]
add eax, 1
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
add eax, dword [ebp - 8]
movzx ecx, byte [eax]
movzx edx, byte [ecx + 0x51a988]
and edx, 4
je 0x4ca7ad
mov eax, dword [ebp - 8]
add eax, 1
mov dword [ebp - 8], eax
jmp 0x4ca78d
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x82
mov eax, dword [ebp + 8]
add eax, dword [ebp - 8]
movzx ecx, byte [eax]
cmp ecx, 0x65
je 0x4ca7d2
mov eax, dword [ebp + 8]
add eax, dword [ebp - 8]
movzx ecx, byte [eax]
cmp ecx, 0x45
jne 0x4ca84e
mov eax, dword [ebp + 8]
add eax, dword [ebp - 8]
movzx ecx, byte [eax + 1]
movzx edx, byte [ecx + 0x51a988]
and edx, 4
jne 0x4ca81c
mov eax, dword [ebp + 8]
add eax, dword [ebp - 8]
movzx ecx, byte [eax + 1]
cmp ecx, 0x2b
je 0x4ca806
mov eax, dword [ebp + 8]
add eax, dword [ebp - 8]
movzx ecx, byte [eax + 1]
cmp ecx, 0x2d
jne 0x4ca84e
mov eax, dword [ebp + 8]
add eax, dword [ebp - 8]
movzx ecx, byte [eax + 2]
movzx edx, byte [ecx + 0x51a988]
and edx, 4
je 0x4ca84e
mov eax, dword [ebp - 8]
add eax, 2
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
add eax, dword [ebp - 8]
movzx ecx, byte [eax]
movzx edx, byte [ecx + 0x51a988]
and edx, 4
je 0x4ca845
mov eax, dword [ebp - 8]
add eax, 1
mov dword [ebp - 8], eax
jmp 0x4ca825
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x82
mov eax, dword [ebp + 8]
add eax, dword [ebp - 8]
movzx ecx, byte [eax]
movzx edx, byte [ecx + 0x51a988]
and edx, 0x46
je 0x4ca877
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x94
mov eax, dword [ebp - 8]
add eax, 1
mov dword [ebp - 8], eax
jmp 0x4ca84e
mov eax, dword [ebp - 8]
jmp 0x4cab49
mov dword [ebp - 8], 1
mov eax, dword [ebp + 8]
movzx ecx, byte [eax]
mov dword [ebp - 0x14], ecx
jmp 0x4ca89a
mov eax, dword [ebp - 8]
add eax, 1
mov dword [ebp - 8], eax
cmp dword [ebp - 0x14], 0x5d
je 0x4ca8b4
mov eax, dword [ebp + 8]
add eax, dword [ebp - 8]
movzx ecx, byte [eax]
mov dword [ebp - 0x14], ecx
cmp dword [ebp - 0x14], 0
je 0x4ca8b4
jmp 0x4ca891
mov eax, dword [ebp - 0x14]
sub eax, 0x5d
neg eax
sbb eax, eax
and eax, 0x7a
add eax, 0x1a
mov ecx, dword [ebp + 0xc]
mov dword [ecx], eax
mov eax, dword [ebp - 8]
jmp 0x4cab49
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x85
mov dword [ebp - 8], 1
jmp 0x4ca8ec
mov eax, dword [ebp - 8]
add eax, 1
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
add eax, dword [ebp - 8]
movzx ecx, byte [eax]
movzx edx, byte [ecx + 0x51a988]
and edx, 4
je 0x4ca903
jmp 0x4ca8e3
mov eax, dword [ebp - 8]
jmp 0x4cab49
mov dword [ebp - 8], 1
jmp 0x4ca91d
mov eax, dword [ebp - 8]
add eax, 1
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
add eax, dword [ebp - 8]
movzx ecx, byte [eax]
movzx edx, byte [ecx + 0x51a988]
and edx, 4
je 0x4ca934
jmp 0x4ca914
cmp dword [ebp - 8], 1
jle case.0x4ca363.27
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x84
mov eax, dword [ebp - 8]
jmp 0x4cab49
mov dword [ebp - 0x2c], 0
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x85
mov dword [ebp - 8], 1
jmp 0x4ca96d
mov eax, dword [ebp - 8]
add eax, 1
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
add eax, dword [ebp - 8]
movzx ecx, byte [eax]
mov dword [ebp - 0x14], ecx
cmp dword [ebp - 0x14], 0
je 0x4caa20
movzx eax, byte [ebp - 0x14]
movzx ecx, byte [eax + 0x51a988]
and ecx, 0x46
je 0x4ca99e
mov eax, dword [ebp - 0x2c]
add eax, 1
mov dword [ebp - 0x2c], eax
jmp 0x4caa1b
cmp dword [ebp - 0x14], 0x28
jne 0x4ca9f9
cmp dword [ebp - 0x2c], 0
jle 0x4ca9f9
mov eax, dword [ebp - 8]
add eax, 1
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
add eax, dword [ebp - 8]
movzx ecx, byte [eax]
mov dword [ebp - 0x14], ecx
cmp dword [ebp - 0x14], 0
je 0x4ca9db
movzx eax, byte [ebp - 0x14]
movzx ecx, byte [eax + 0x51a988]
and ecx, 1
jne 0x4ca9db
cmp dword [ebp - 0x14], 0x29
jne 0x4ca9aa
cmp dword [ebp - 0x14], 0x29
jne 0x4ca9ec
mov eax, dword [ebp - 8]
add eax, 1
mov dword [ebp - 8], eax
jmp 0x4ca9f5
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x94
jmp 0x4caa20
cmp dword [ebp - 0x14], 0x3a
jne 0x4caa19
mov eax, dword [ebp + 8]
add eax, dword [ebp - 8]
movzx ecx, byte [eax + 1]
cmp ecx, 0x3a
jne 0x4caa19
mov eax, dword [ebp - 8]
add eax, 1
mov dword [ebp - 8], eax
jmp 0x4caa1b
jmp 0x4caa20
jmp 0x4ca964
cmp dword [ebp - 0x2c], 0
jne 0x4caa2f
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x94
mov eax, dword [ebp - 8]
jmp 0x4cab49
mov eax, dword [ebp + 8]
movzx ecx, byte [eax + 1]
cmp ecx, 0x27
jne case.0x4ca363.2
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x83
mov dword [ebp - 8], 2
jmp 0x4caa62
mov eax, dword [ebp - 8]
add eax, 1
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
add eax, dword [ebp - 8]
movzx ecx, byte [eax]
movzx edx, byte [ecx + 0x51a988]
and edx, 8
je 0x4caa79
jmp 0x4caa59
mov eax, dword [ebp + 8]
add eax, dword [ebp - 8]
movzx ecx, byte [eax]
cmp ecx, 0x27
jne 0x4caa9a
mov eax, dword [ebp - 8]
and eax, 0x80000001
jns 0x4caa96
dec eax
or eax, 0xfffffffe
inc eax
test eax, eax
je 0x4caac9
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x94
mov eax, dword [ebp + 8]
add eax, dword [ebp - 8]
movzx ecx, byte [eax]
test ecx, ecx
je 0x4caac9
mov eax, dword [ebp + 8]
add eax, dword [ebp - 8]
movzx ecx, byte [eax]
cmp ecx, 0x27
je 0x4caac9
mov eax, dword [ebp - 8]
add eax, 1
mov dword [ebp - 8], eax
jmp 0x4caaa3
mov eax, dword [ebp + 8]
add eax, dword [ebp - 8]
movzx ecx, byte [eax]
test ecx, ecx
je 0x4caadf
mov eax, dword [ebp - 8]
add eax, 1
mov dword [ebp - 8], eax
mov eax, dword [ebp - 8]
jmp 0x4cab49
mov eax, dword [ebp + 8]
movzx ecx, byte [eax]
movzx edx, byte [ecx + 0x51a988]
and edx, 0x46
jne 0x4caaf8
jmp 0x4cab3b
mov dword [ebp - 8], 1
jmp 0x4cab0a
mov eax, dword [ebp - 8]
add eax, 1
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
add eax, dword [ebp - 8]
movzx ecx, byte [eax]
movzx edx, byte [ecx + 0x51a988]
and edx, 0x46
je 0x4cab21
jmp 0x4cab01
mov eax, dword [ebp - 8]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.004cac40
add esp, 8
mov edx, dword [ebp + 0xc]
mov dword [edx], eax
mov eax, dword [ebp - 8]
jmp 0x4cab49
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x94
mov eax, 1
pop edi
pop esi
pop ebx
add esp, 0xf4
cmp ebp, esp
call fcn.00504bf9
mov esp, ebp
pop ebp
ret