Function at 0x4c9d1a
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push 0x4044c6
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push 0x7c
pop eax
call fcn.004044c0
push ebx
push esi
push edi
mov dword [ebp - 0xc], esp
mov dword [ebp - 8], 0x402ec0
and word [ebp - 0x38], 0
mov eax, dword [ebp + 0xc]
push dword [eax]
call fcn.0040485c
mov dword [ebp - 0x34], eax
mov eax, dword [ebp + 0xc]
push dword [eax]
push 2
push 0xffffffffffffffff
push 0x20
call fcn.00404874
push 2
mov eax, dword [ebp - 0x34]
sub eax, 3
jo 0x4ca72d
push eax
call fcn.004046be
push 2
mov eax, dword [ebp - 0x34]
sub eax, 3
jo 0x4ca72d
push eax
lea eax, [ebp - 0x3c]
push eax
push 4
call fcn.004045d4
mov eax, dword [ebp - 0x34]
sub eax, dword [ebp - 0x3c]
jo 0x4ca72d
mov dword [0x52125c], eax
cmp dword [ebp - 0x3c], 0
jle 0x4c9db7
mov eax, dword [ebp - 0x3c]
cmp eax, dword [ebp - 0x34]
jle 0x4c9ddd
push 2
call fcn.00404850
mov ax, word [ebp - 0x38]
mov word [ebp - 0x4c], ax
mov dword [ebp - 0x54], 0xb
lea edx, [ebp - 0x54]
lea ecx, [ebp - 0x30]
call fcn.004048d4
jmp 0x4ca6e5
push 0
mov eax, dword [ebp - 0x3c]
sub eax, 1
jo 0x4ca72d
push eax
push 1
push 0x11
push 0x52126c
push 1
push 0x80
call fcn.00404862
add esp, 0x1c
push 2
mov eax, dword [ebp - 0x34]
sub eax, dword [ebp - 0x3c]
jo 0x4ca72d
add eax, 1
jo 0x4ca72d
push eax
call fcn.004046be
push 2
push 0x52126c
push 0x40b9d8
call fcn.00404856
push 2
call fcn.00404850
push 5
push dword [0x52126c]
call fcn.00404832
movzx eax, byte [eax]
mov dword [ebp - 0x68], eax
fild dword [ebp - 0x68]
fstp qword [ebp - 0x20]
fld qword [ebp - 0x20]
fmul qword [0x402eb8]
fstp qword [ebp - 0x20]
fnstsw ax
test al, 0xd
jne 0x4ca728
push dword [0x52126c]
lea eax, [ebp - 0x44]
push eax
call fcn.0040482c
push 4
push 9
push dword [ebp - 0x44]
call fcn.00404832
push eax
lea eax, [ebp - 0x40]
push eax
call fcn.0040ad4c
call fcn.00404826
lea eax, [ebp - 0x44]
push eax
call fcn.00404820
fild dword [ebp - 0x40]
fstp qword [ebp - 0x70]
fld qword [ebp - 0x20]
fadd qword [ebp - 0x70]
fadd qword [0x402eb0]
fsub qword [0x401370]
fnstsw ax
test al, 0xd
jne 0x4ca728
call fcn.0040481a
mov dword [ebp - 0x40], eax
push 0
push dword [0x52126c]
call fcn.00404832
movzx ax, byte [eax]
xor ebx, ebx
cmp ax, 0xc4
setne bl
push 1
push dword [0x52126c]
call fcn.00404832
movzx ax, byte [eax]
xor ecx, ecx
cmp ax, 0xc5
setne cl
or ebx, ecx
test ebx, ebx
jne 0x4c9f21
or dword [0x521018], 0xffffffff
or dword [ebp - 0x4c], 0xffffffff
mov dword [ebp - 0x54], 0xb
lea edx, [ebp - 0x54]
lea ecx, [ebp - 0x30]
call fcn.004048d4
jmp 0x4ca6e5
and dword [0x521018], 0
push 0
push dword [0x52126c]
call fcn.00404832
movzx si, byte [eax]
sub si, 0xfe
neg si
sbb esi, esi
inc esi
push 1
push dword [0x52126c]
call fcn.00404832
movzx ax, byte [eax]
sub ax, 0xf2
neg ax
sbb eax, eax
inc eax
or esi, eax
neg esi
sbb esi, esi
neg esi
push dword [0x52126c]
push 1
call fcn.00404838
xor ecx, ecx
cmp eax, dword [ebp - 0x40]
setge cl
and esi, ecx
test esi, esi
je 0x4c9f8c
cmp dword [ebp - 0x40], 0
jge 0x4ca6c6
push 0
mov eax, dword [ebp - 0x34]
sub eax, 1
jo 0x4ca72d
push eax
push 1
push 0x11
push 0x52126c
push 1
push 0x80
call fcn.00404862
add esp, 0x1c
mov eax, dword [ebp + 0xc]
push dword [eax]
push 2
push 0xffffffffffffffff
push 0x20
call fcn.00404874
push 2
push 0x52126c
push 0x40b9d8
call fcn.00404856
push 2
call fcn.00404850
mov eax, dword [ebp - 0x34]
sub eax, 5
jo 0x4ca72d
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x58], 1
mov dword [ebp - 0x18], 1
jmp 0x4ca009
mov eax, dword [ebp - 0x18]
add eax, dword [ebp - 0x58]
jo 0x4ca72d
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x18]
cmp eax, dword [ebp - 0x5c]
jg 0x4ca6c4
push dword [ebp - 0x18]
push dword [0x52126c]
call fcn.00404832
movzx ax, byte [eax]
xor ebx, ebx
cmp ax, 0xfe
setne bl
mov eax, dword [ebp - 0x18]
add eax, 1
jo 0x4ca72d
push eax
push dword [0x52126c]
call fcn.00404832
movzx ax, byte [eax]
xor ecx, ecx
cmp ax, 0xf2
setne cl
or ebx, ecx
neg ebx
sbb ebx, ebx
neg ebx
mov eax, dword [ebp - 0x18]
add eax, 2
jo 0x4ca72d
push eax
push dword [0x52126c]
call fcn.00404832
movzx ax, byte [eax]
xor ecx, ecx
cmp ax, 0xfc
setne cl
or ebx, ecx
neg ebx
sbb ebx, ebx
neg ebx
mov eax, dword [ebp - 0x18]
add eax, 3
jo 0x4ca72d
push eax
push dword [0x52126c]
call fcn.00404832
movzx ax, byte [eax]
xor ecx, ecx
cmp ax, 0xff
setne cl
or ebx, ecx
neg ebx
sbb ebx, ebx
neg ebx
push dword [ebp - 0x18]
push dword [0x52126c]
call fcn.00404832
movzx ax, byte [eax]
call fcn.00526416
cmp ax, 0xfe
setne bl
mov eax, dword [ebp - 0x18]
add eax, 1
jo 0x4ca72d
push eax
push dword [0x52126c]
call fcn.00404832
movzx ax, byte [eax]
xor ecx, ecx
cmp ax, 0xf2
setne cl
or ebx, ecx
neg ebx
sbb ebx, ebx
neg ebx
mov eax, dword [ebp - 0x18]
add eax, 2
jo 0x4ca72d
push eax
push dword [0x52126c]
call fcn.00404832
movzx ax, byte [eax]
xor ecx, ecx
cmp ax, 0xfd
setne cl
or ebx, ecx
neg ebx
sbb ebx, ebx
neg ebx
mov eax, dword [ebp - 0x18]
add eax, 3
jo 0x4ca72d
push eax
push dword [0x52126c]
call fcn.00404832
movzx ax, byte [eax]
xor ecx, ecx
cmp ax, 0xff
setne cl
or ebx, ecx
neg ebx
sbb ebx, ebx
neg ebx
call fcn.00526416
neg edx
sbb edx, edx
neg edx
push dword [ebp - 0x18]
push dword [0x52126c]
mov dword [ebp - 0x78], edx
call fcn.00404832
movzx ax, byte [eax]
xor ebx, ebx
cmp ax, 0xfe
setne bl
mov eax, dword [ebp - 0x18]
add eax, 1
jo 0x4ca72d
push eax
push dword [0x52126c]
call fcn.00404832
movzx ax, byte [eax]
xor ecx, ecx
cmp ax, 0xf2
setne cl
or ebx, ecx
neg ebx
sbb ebx, ebx
neg ebx
mov eax, dword [ebp - 0x18]
add eax, 2
jo 0x4ca72d
push eax
push dword [0x52126c]
call fcn.00404832
movzx ax, byte [eax]
xor ecx, ecx
cmp ax, 0xfe
setne cl
or ebx, ecx
neg ebx
sbb ebx, ebx
neg ebx
call fcn.00526416
neg edx
sbb edx, edx
neg edx
push dword [ebp - 0x18]
push dword [0x52126c]
mov dword [ebp - 0x7c], edx
call fcn.00404832
movzx ax, byte [eax]
xor ebx, ebx
cmp ax, 0xfe
setne bl
mov eax, dword [ebp - 0x18]
add eax, 1
jo 0x4ca72d
push eax
push dword [0x52126c]
call fcn.00404832
movzx ax, byte [eax]
xor ecx, ecx
cmp ax, 0xf2
setne cl
or ebx, ecx
neg ebx
sbb ebx, ebx
neg ebx
mov eax, dword [ebp - 0x18]
add eax, 2
jo 0x4ca72d
push eax
push dword [0x52126c]
call fcn.00404832
movzx ax, byte [eax]
xor ecx, ecx
cmp ax, 0xee
setne cl
or ebx, ecx
neg ebx
sbb ebx, ebx
neg ebx
call fcn.00526416
neg edx
sbb edx, edx
neg edx
push dword [ebp - 0x18]
push dword [0x52126c]
mov dword [ebp - 0x80], edx
call fcn.00404832
movzx ax, byte [eax]
xor ebx, ebx
cmp ax, 0xfe
setne bl
mov eax, dword [ebp - 0x18]
add eax, 1
jo 0x4ca72d
push eax
push dword [0x52126c]
call fcn.00404832
movzx ax, byte [eax]
xor ecx, ecx
cmp ax, 0xf2
setne cl
or ebx, ecx
neg ebx
sbb ebx, ebx
neg ebx
mov eax, dword [ebp - 0x18]
add eax, 2
jo 0x4ca72d
push eax
push dword [0x52126c]
call fcn.00404832
movzx ax, byte [eax]
xor ecx, ecx
cmp ax, 0xff
setne cl
or ebx, ecx
neg ebx
sbb ebx, ebx
neg ebx
mov eax, dword [ebp - 0x18]
add eax, 3
jo 0x4ca72d
push eax
push dword [0x52126c]
call fcn.00404832
movzx ax, byte [eax]
xor ecx, ecx
cmp ax, 0x1b
setne cl
or ebx, ecx
neg ebx
sbb ebx, ebx
neg ebx
call fcn.00526416
neg edx
sbb edx, edx
neg edx
push dword [ebp - 0x18]
push dword [0x52126c]
mov dword [ebp - 0x84], edx
call fcn.00404832
movzx ax, byte [eax]
xor ebx, ebx
cmp ax, 0xfe
setne bl
mov eax, dword [ebp - 0x18]
add eax, 1
jo 0x4ca72d
push eax
push dword [0x52126c]
call fcn.00404832
movzx ax, byte [eax]
xor ecx, ecx
cmp ax, 0xf2
setne cl
or ebx, ecx
neg ebx
sbb ebx, ebx
neg ebx
mov eax, dword [ebp - 0x18]
add eax, 2
jo 0x4ca72d
push eax
push dword [0x52126c]
call fcn.00404832
movzx ax, byte [eax]
xor ecx, ecx
cmp ax, 0xff
setne cl
or ebx, ecx
neg ebx
sbb ebx, ebx
neg ebx
mov eax, dword [ebp - 0x18]
add eax, 3
jo 0x4ca72d
push eax
push dword [0x52126c]
call fcn.00404832
movzx ax, byte [eax]
xor ecx, ecx
cmp ax, 0x1f
setne cl
or ebx, ecx
neg ebx
sbb ebx, ebx
neg ebx
mov edx, dword [ebp - 0x84]
and edx, ebx
neg edx
sbb edx, edx
neg edx
push dword [ebp - 0x18]
push dword [0x52126c]
mov dword [ebp - 0x88], edx
call fcn.00404832
movzx ax, byte [eax]
xor ebx, ebx
cmp ax, 0xfe
setne bl
mov eax, dword [ebp - 0x18]
add eax, 1
jo 0x4ca72d
push eax
push dword [0x52126c]
call fcn.00404832
movzx ax, byte [eax]
xor ecx, ecx
cmp ax, 0xf2
setne cl
or ebx, ecx
neg ebx
sbb ebx, ebx
neg ebx
mov eax, dword [ebp - 0x18]
add eax, 2
jo 0x4ca72d
push eax
push dword [0x52126c]
call fcn.00404832
movzx ax, byte [eax]
xor ecx, ecx
cmp ax, 0xff
setne cl
or ebx, ecx
neg ebx
sbb ebx, ebx
neg ebx
mov eax, dword [ebp - 0x18]
add eax, 3
jo 0x4ca72d
push eax
push dword [0x52126c]
call fcn.00404832
movzx ax, byte [eax]
xor ecx, ecx
cmp ax, 0x20
setne cl
or ebx, ecx
neg ebx
sbb ebx, ebx
neg ebx
mov edx, dword [ebp - 0x88]
and edx, ebx
neg edx
sbb edx, edx
neg edx
push dword [ebp - 0x18]
push dword [0x52126c]
mov dword [ebp - 0x8c], edx
call fcn.00404832
movzx ax, byte [eax]
xor ebx, ebx
cmp ax, 0xfe
setne bl
mov eax, dword [ebp - 0x18]
add eax, 1
jo 0x4ca72d
push eax
push dword [0x52126c]
call fcn.00404832
movzx ax, byte [eax]
xor ecx, ecx
cmp ax, 0xf2
setne cl
or ebx, ecx
neg ebx
sbb ebx, ebx
neg ebx
mov eax, dword [ebp - 0x18]
add eax, 2
jo 0x4ca72d
push eax
push dword [0x52126c]
call fcn.00404832
movzx ax, byte [eax]
xor ecx, ecx
cmp ax, 0xff
setne cl
or ebx, ecx
neg ebx
sbb ebx, ebx
neg ebx
mov eax, dword [ebp - 0x18]
add eax, 3
jo 0x4ca72d
push eax
push dword [0x52126c]
call fcn.00404832
movzx ax, byte [eax]
xor ecx, ecx
cmp ax, 0xff
setne cl
or ebx, ecx
neg ebx
sbb ebx, ebx
neg ebx
mov eax, dword [ebp - 0x18]
add eax, 4
jo 0x4ca72d
push eax
push dword [0x52126c]
call fcn.00404832
movzx ax, byte [eax]
xor ecx, ecx
cmp ax, 0xa
setne cl
or ebx, ecx
neg ebx
sbb ebx, ebx
neg ebx
mov edx, dword [ebp - 0x8c]
and edx, ebx
neg edx
sbb edx, edx
neg edx
push dword [ebp - 0x18]
push dword [0x52126c]
mov dword [ebp - 0x90], edx
call fcn.00404832
movzx ax, byte [eax]
xor ebx, ebx
cmp ax, 0xfe
setne bl
mov eax, dword [ebp - 0x18]
add eax, 1
jo 0x4ca72d
push eax
push dword [0x52126c]
call fcn.00404832
movzx ax, byte [eax]
xor ecx, ecx
cmp ax, 0xf2
setne cl
or ebx, ecx
neg ebx
sbb ebx, ebx
neg ebx
mov eax, dword [ebp - 0x18]
add eax, 2
jo 0x4ca72d
push eax
push dword [0x52126c]
call fcn.00404832
movzx ax, byte [eax]
xor ecx, ecx
cmp ax, 0xff
setne cl
or ebx, ecx
neg ebx
sbb ebx, ebx
neg ebx
mov eax, dword [ebp - 0x18]
add eax, 3
jo 0x4ca72d
push eax
push dword [0x52126c]
call fcn.00404832
movzx ax, byte [eax]
xor ecx, ecx
cmp ax, 0xff
setne cl
or ebx, ecx
neg ebx
sbb ebx, ebx
neg ebx
mov eax, dword [ebp - 0x18]
add eax, 4
jo 0x4ca72d
push eax
push dword [0x52126c]
call fcn.00404832
movzx ax, byte [eax]
xor ecx, ecx
cmp ax, 0xc
setne cl
or ebx, ecx
neg ebx
sbb ebx, ebx
neg ebx
mov eax, dword [ebp - 0x90]
and eax, ebx
test eax, eax
jne 0x4ca6bf
push 0
mov eax, dword [ebp - 0x34]
sub eax, dword [ebp - 0x18]
jo 0x4ca72d
push eax
push 1
push 0x11
push 0x52126c
push 1
push 0x80
call fcn.00404862
add esp, 0x1c
mov eax, dword [ebp + 0xc]
push dword [eax]
push 2
push 0xffffffffffffffff
push 0x20
call fcn.00404874
push 2
mov eax, dword [ebp - 0x18]
add eax, 1
jo 0x4ca72d
push eax
call fcn.004046be
push 2
push 0x52126c
push 0x40b9d8
call fcn.00404856
push 2
call fcn.00404850
mov eax, dword [ebp - 0x18]
mov dword [0x52125c], eax
or word [ebp - 0x38], 0xffff
jmp 0x4ca6c4
jmp 0x4c9ffa
jmp 0x4ca6cb
or word [ebp - 0x38], 0xffff
mov ax, word [ebp - 0x38]
mov word [ebp - 0x4c], ax
mov dword [ebp - 0x54], 0xb
lea edx, [ebp - 0x54]
lea ecx, [ebp - 0x30]
call fcn.004048d4
wait
push 0x4ca70a
jmp 0x4ca709
ret
jmp fcn.004044cc
call fcn.0040477e