Function at 0x412b00
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0xdc
mov dword [esp + 0x3c], eax
mov edi, edx
mov dword [esp + 0x40], edx
mov dword [esp + 0x44], ecx
mov ebx, dword [esp + 0x104]
mov dword [esp + 0x48], ebx
mov esi, dword [eax]
mov ebp, dword [esi + 4]
mov eax, dword [esi + 0x1c]
lea edx, [ebp + eax + 0x22]
xor eax, eax
mov al, byte [edx]
shl eax, 8
xor ebx, ebx
mov bl, byte [edx + 1]
mov edx, ebx
add eax, edx
and eax, 0xffff
mov ecx, dword [esi + 0x20]
cmp edi, eax
jge 0x412ee8
lea edx, [ecx + edi*4]
lea ecx, [ebp + edx]
xor eax, eax
mov al, byte [ecx]
shl eax, 8
xor ebx, ebx
mov bl, byte [ecx + 1]
mov ecx, ebx
add eax, ecx
cwde
mov dword [esp + 0x4c], eax
lea edx, [ebp + edx + 2]
xor eax, eax
mov al, byte [edx]
shl eax, 8
xor ebx, ebx
mov bl, byte [edx + 1]
mov edx, ebx
add eax, edx
cwde
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x3c]
fld dword [eax + 0x14]
cmp byte [esp + 0x48], 0
je 0x412d76
mov eax, dword [esp + 0xfc]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xf8]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xf4]
mov dword [esp + 8], eax
fst dword [esp + 4]
fst dword [esp]
fstp dword [esp + 0x58]
mov ecx, dword [esp + 0xf0]
mov edx, dword [esp + 0x40]
mov eax, esi
call fcn.00422e40
mov dword [esp + 0x54], 0
fld dword [esp + 0x58]
fld st(0)
fstp dword [esp + 0x40]
fimul dword [esp + 0x50]
fstp dword [esp]
call fcn.00457db0
fnstcw word [esp + 0x8e]
mov ax, word [esp + 0x8e]
or ah, 0xc
mov word [esp + 0x8c], ax
mov eax, dword [esp + 0xf0]
fldcw word [esp + 0x8c]
fistp dword [eax]
fldcw word [esp + 0x8e]
mov esi, dword [esp + 0x3c]
fld dword [esp + 0x40]
fimul dword [esi + 0x18]
fstp dword [esp]
call fcn.00454270
mov eax, dword [esp + 0xf4]
fiadd dword [eax]
fnstcw word [esp + 0x8e]
mov ax, word [esp + 0x8e]
or ah, 0xc
mov word [esp + 0x8c], ax
mov eax, dword [esp + 0xf4]
fldcw word [esp + 0x8c]
fistp dword [eax]
fldcw word [esp + 0x8e]
fld dword [esp + 0x40]
fimul dword [esp + 0x4c]
fstp dword [esp]
call fcn.00454174
mov edx, dword [esp + 0x100]
mov dword [edx], eax
cmp byte [esp + 0x48], 0
jne 0x412fef
mov eax, dword [esp + 0xf8]
mov ebx, dword [eax]
mov eax, dword [esp + 0xfc]
mov ecx, dword [eax]
mov dword [esp + 0x50], ecx
mov eax, dword [esi + 0xc]
mov esi, dword [eax + 8]
mov edx, dword [eax + 0xc]
cmp esi, ebx
jl 0x412fd5
cmp ecx, edx
jg 0x412f2d
mov esi, dword [esp + 0x50]
test esi, esi
jle 0x412d6b
lea ecx, [ebx*4]
mov dword [esp + 0x58], ecx
xor edi, edi
xor esi, esi
mov dword [esp + 0x40], edi
mov edi, ebx
mov ebp, dword [esp + 0x3c]
lea esi, [esi]
nop
mov edx, dword [eax + 4]
imul edx, esi
test edi, edi
jle 0x412d60
mov ecx, dword [esp + 0x54]
mov ebx, dword [esp + 0x40]
add ecx, ebx
mov ebx, dword [esp + 0x58]
add ebx, edx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x48], edi
mov dword [esp + 0x4c], esi
mov ebx, dword [esp + 0x44]
jmp 0x412d23
mov eax, dword [ebp + 0xc]
mov esi, dword [ebx]
mov eax, dword [eax]
mov dword [eax + edx], esi
mov eax, dword [ebp + 0xc]
mov esi, dword [eax]
xor eax, eax
mov al, byte [ebx + 3]
inc eax
movzx edi, byte [ecx]
and edi, 0xff
imul eax, edi
mov byte [esi + edx + 3], ah
add edx, 4
inc ecx
mov eax, dword [esp + 0x3c]
cmp edx, eax
jne 0x412d20
mov edi, dword [esp + 0x48]
mov esi, dword [esp + 0x4c]
mov dword [esp + 0x44], ebx
mov eax, dword [ebp + 0xc]
inc esi
add dword [esp + 0x40], edi
cmp dword [esp + 0x50], esi
jne 0x412cf0
add esp, 0xdc
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x3c]
mov edx, dword [eax + 0x24]
mov ebx, dword [esp + 0x40]
sar ebx, 6
mov dword [esp + 0x64], ebx
mov eax, dword [eax + 8]
jmp 0x412d9b
mov ecx, dword [eax]
cmp ebx, dword [ecx + 4]
je 0x412f67
mov eax, dword [eax + 8]
mov ebp, dword [eax + 0xc]
test ebp, ebp
jne 0x412d90
fstp dword [esp + 0x54]
lea ecx, [esp + 0xa8]
mov edx, dword [esp + 0x40]
mov eax, esi
call fcn.0040d480
mov ebx, eax
fld dword [esp + 0x54]
ftst
fnstsw ax
test ah, 0x40
je 0x412ffc
fstp st(0)
mov eax, dword [esp + 0xa8]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov dword [esp + 0x54], 0
mov eax, dword [esp + 0xf8]
mov ebp, dword [eax]
mov eax, dword [esp + 0xfc]
mov eax, dword [eax]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0xf0]
mov eax, dword [eax]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0xf4]
mov eax, dword [eax]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x3c]
mov ebx, dword [eax + 0x24]
mov dword [esp + 0x68], ebx
mov esi, dword [eax + 8]
mov eax, dword [esi + 8]
mov ecx, dword [eax + 0xc]
test ecx, ecx
je 0x4130d8
mov ecx, dword [esp + 0x64]
jmp 0x412e4e
mov eax, dword [eax + 8]
mov edx, dword [eax + 0xc]
test edx, edx
je 0x4130d8
mov edx, dword [eax]
cmp ecx, dword [edx + 4]
jne 0x412e40
mov edi, dword [edx]
mov dword [esp + 4], 0x1c
mov dword [esp], 1
call sub.msvcrt.dll_calloc
mov esi, eax
test eax, eax
je 0x413633
mov eax, dword [esp + 0x54]
mov dword [esi], eax
mov dword [esi + 4], ebp
mov eax, dword [esp + 0x58]
mov dword [esi + 8], eax
mov eax, dword [esp + 0x5c]
mov dword [esi + 0xc], eax
mov eax, dword [esp + 0x60]
mov dword [esi + 0x10], eax
mov eax, dword [esp + 0x68]
mov dword [esi + 0x14], eax
mov eax, dword [esp + 0x40]
mov dword [esi + 0x18], eax
mov dword [esp + 4], 0x10
mov dword [esp], 1
call sub.msvcrt.dll_calloc
test eax, eax
je 0x413633
mov dword [eax + 8], 0
mov dword [eax], esi
mov dword [eax + 0xc], 9
mov edx, dword [edi + 8]
mov dword [eax + 8], edx
mov dword [eax + 4], edi
mov dword [edx + 4], eax
mov dword [edi + 8], eax
mov eax, dword [esp + 0x3c]
fld dword [eax + 0x14]
jmp 0x412be0
lea edi, [eax*4 - 4]
lea edx, [edi + ecx]
lea ebx, [ebp + edx]
xor edx, edx
mov dl, byte [ebx]
shl edx, 8
mov word [esp + 0x4c], dx
xor edx, edx
mov dl, byte [ebx + 1]
mov ebx, edx
mov edx, dword [esp + 0x4c]
add edx, ebx
movsx ebx, dx
mov dword [esp + 0x4c], ebx
lea ecx, [edi + ecx + 4]
mov edx, dword [esp + 0x40]
sub edx, eax
add edx, edx
add ecx, edx
lea edx, [ebp + ecx]
jmp 0x412b6f
mov edi, ecx
mov edx, dword [eax]
test edx, edx
je 0x412f45
mov dword [esp + 0x40], eax
mov dword [esp], edx
call sub.msvcrt.dll_free
mov eax, dword [esp + 0x40]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov ecx, 1
mov edx, edi
mov eax, esi
call fcn.00412a50
mov ecx, dword [esp + 0x3c]
mov dword [ecx + 0xc], eax
jmp 0x412cc3
mov eax, dword [ecx]
mov eax, dword [eax + 8]
mov ecx, dword [eax + 0xc]
test ecx, ecx
je 0x412da5
mov ebx, dword [esp + 0x40]
jmp 0x412f8e
mov eax, dword [eax + 8]
mov edi, dword [eax + 0xc]
test edi, edi
je 0x412da5
mov ecx, dword [eax]
cmp ebx, dword [ecx + 0x18]
jne 0x412f80
cmp edx, dword [ecx + 0x14]
jne 0x412f80
mov eax, dword [ecx + 4]
mov ebx, dword [esp + 0xf8]
mov dword [ebx], eax
mov eax, dword [ecx + 8]
mov ebx, dword [esp + 0xfc]
mov dword [ebx], eax
mov eax, dword [ecx + 0xc]
mov ebx, dword [esp + 0xf0]
mov dword [ebx], eax
mov eax, dword [ecx + 0x10]
mov ebx, dword [esp + 0xf4]
mov dword [ebx], eax
mov eax, dword [ecx]
mov dword [esp + 0x54], eax
jmp 0x412be0
mov ecx, dword [esp + 0x50]
mov edi, ecx
cmp ecx, edx
jl 0x412fe6
mov esi, ebx
jmp 0x412f2f
mov edi, edx
mov esi, ebx
jmp 0x412f2f
xor eax, eax
add esp, 0xdc
pop ebx
pop esi
pop edi
pop ebp
ret
lea eax, [esp + 0xa4]
mov dword [esp + 0x10], eax
lea eax, [esp + 0xa0]
mov dword [esp + 0xc], eax
lea eax, [esp + 0x9c]
mov dword [esp + 8], eax
fst dword [esp + 4]
fst dword [esp]
fstp dword [esp + 0x54]
lea ecx, [esp + 0x98]
mov edx, dword [esp + 0x40]
mov eax, esi
call fcn.00422e40
mov ebp, dword [esp + 0x98]
mov esi, dword [esp + 0xa0]
sub esi, ebp
mov dword [esp + 0xac], esi
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0x80], ecx
mov eax, dword [esp + 0xa4]
sub eax, ecx
mov dword [esp + 0xb0], eax
mov dword [esp + 0xb8], 0
mov edx, dword [esp + 0xf8]
mov dword [edx], esi
mov edx, dword [esp + 0xfc]
mov dword [edx], eax
mov edx, dword [esp + 0xf0]
mov dword [edx], ebp
mov edx, dword [esp + 0xf4]
mov dword [edx], ecx
mov ecx, dword [esp + 0xa8]
mov dword [esp + 0x70], ecx
test esi, esi
je 0x4130bb
test eax, eax
fld dword [esp + 0x54]
jne 0x413182
fstp st(0)
mov dword [esp + 0x54], 0
jmp 0x4130c7
fstp st(0)
mov eax, dword [esp + 0x70]
mov dword [esp], eax
call sub.msvcrt.dll_free
jmp 0x412de7
mov dword [esp + 4], 8
mov dword [esp], 1
call sub.msvcrt.dll_calloc
mov ebx, eax
test eax, eax
je 0x413633
mov dword [esp + 4], 0x10
mov dword [esp], 1
call sub.msvcrt.dll_calloc
mov edi, eax
test eax, eax
je 0x413633
mov dword [eax], 0
mov dword [eax + 0xc], 0
mov dword [eax + 8], eax
mov dword [eax + 4], eax
mov dword [ebx], eax
mov eax, dword [esp + 0x64]
mov dword [ebx + 4], eax
jmp 0x413139
mov eax, dword [esi + 0xc]
test eax, eax
je 0x413140
mov esi, dword [esi + 8]
test esi, esi
jne 0x413132
mov dword [esp + 4], 0x10
mov dword [esp], 1
call sub.msvcrt.dll_calloc
mov edx, eax
test eax, eax
je 0x413633
mov dword [eax + 4], 0
mov dword [eax], ebx
mov dword [eax + 0xc], 9
mov dword [eax + 8], esi
mov eax, dword [esi + 4]
mov dword [edx + 4], eax
mov dword [eax + 8], edx
mov dword [esi + 4], edx
jmp 0x412e57
fstp dword [esp + 0x5c]
imul eax, esi
mov dword [esp], eax
call sub.msvcrt.dll_malloc
mov dword [esp + 0x54], eax
mov dword [esp + 0xb8], eax
test eax, eax
je 0x4130c7
mov dword [esp + 0xb4], esi
mov dword [esp + 0xbc], 0
test ebx, ebx
jle 0x4130c7
lea eax, [ebx + ebx]
add eax, ebx
add eax, eax
add eax, ebx
add eax, eax
mov ebx, dword [esp + 0x70]
add eax, ebx
mov dword [esp + 0x58], eax
mov eax, ebx
xor edx, edx
fld dword [esp + 0x5c]
cmp byte [eax + 0xc], 1
jne 0x4131e2
inc edx
add eax, 0xe
cmp dword [esp + 0x58], eax
jne 0x4131db
fstp dword [esp + 0x5c]
test edx, edx
je 0x4130c7
lea edi, [edx*4]
mov dword [esp], edi
call sub.msvcrt.dll_malloc
mov dword [esp + 0x6c], eax
test eax, eax
je 0x4130c7
fld dword [esp + 0x5c]
fld dword [0x4685a8]
fdiv st(1)
fmul st(0)
fstp dword [esp + 0x5c]
mov dword [esp + 0x68], 0
xor esi, esi
xor eax, eax
mov dword [esp + 0x60], ebp
mov dword [esp + 0x74], edi
mov edi, eax
fstp dword [esp + 0x78]
mov dword [esp + 0xbc], 0
mov ebx, dword [esp + 0x70]
fldz
fld st(0)
mov ebp, 0xffffffff
jmp 0x413299
cmp al, 2
jne 0x41328c
fstp st(0)
fstp st(0)
fild word [ebx]
fild word [ebx + 2]
mov eax, dword [esp + 0xbc]
lea edx, [eax + 1]
mov dword [esp + 0xbc], edx
test edi, edi
je 0x41328a
fxch st(1)
lea eax, [edi + eax*8]
fst dword [eax]
fxch st(1)
fst dword [eax + 4]
fxch st(1)
jmp 0x41328c
fxch st(1)
add ebx, 0xe
cmp dword [esp + 0x58], ebx
je 0x4133af
mov al, byte [ebx + 0xc]
cmp al, 3
je 0x413356
ja 0x4132eb
cmp al, 1
jne 0x413258
fstp st(0)
fstp st(0)
mov eax, dword [esp + 0xbc]
cmp ebp, 0xffffffff
je 0x4132c5
mov edx, eax
sub edx, esi
mov ecx, dword [esp + 0x6c]
mov dword [ecx + ebp*4], edx
inc ebp
fild word [ebx]
fild word [ebx + 2]
lea edx, [eax + 1]
mov dword [esp + 0xbc], edx
test edi, edi
je 0x4132e5
fxch st(1)
lea edx, [edi + eax*8]
fst dword [edx]
fxch st(1)
fst dword [edx + 4]
fxch st(1)
mov esi, eax
jmp 0x41328c
cmp al, 4
jne 0x41328c
fild word [ebx + 2]
fild word [ebx]
fld dword [esp + 0x5c]
fstp dword [esp + 0x20]
fxch st(1)
fst dword [esp + 0x1c]
fstp dword [esp + 0x84]
fst dword [esp + 0x18]
fstp dword [esp + 0x7c]
fild word [ebx + 0xa]
fstp dword [esp + 0x14]
fild word [ebx + 8]
fstp dword [esp + 0x10]
fild word [ebx + 6]
fstp dword [esp + 0xc]
fild word [ebx + 4]
fstp dword [esp + 8]
fxch st(1)
fstp dword [esp + 4]
fstp dword [esp]
xor ecx, ecx
lea edx, [esp + 0xbc]
mov eax, edi
call fcn.0040e130
fld dword [esp + 0x84]
fld dword [esp + 0x7c]
jmp 0x41328c
fild word [ebx + 2]
fild word [ebx]
fld dword [esp + 0x5c]
fstp dword [esp + 0x18]
fxch st(1)
fst dword [esp + 0x14]
fstp dword [esp + 0x84]
fst dword [esp + 0x10]
fstp dword [esp + 0x7c]
fild word [ebx + 6]
fstp dword [esp + 0xc]
fild word [ebx + 4]
fstp dword [esp + 8]
fxch st(1)
fstp dword [esp + 4]
fstp dword [esp]
xor ecx, ecx
lea edx, [esp + 0xbc]
mov eax, edi
call fcn.0042a0a0
fld dword [esp + 0x84]
fld dword [esp + 0x7c]
jmp 0x41328c
fstp st(0)
fstp st(0)
mov edx, dword [esp + 0xbc]
mov ecx, edx
sub ecx, esi
mov eax, dword [esp + 0x6c]
mov dword [eax + ebp*4], ecx
cmp dword [esp + 0x68], 1
je 0x413400
shl edx, 3
mov dword [esp], edx
call sub.msvcrt.dll_malloc
mov edi, eax
mov dword [esp + 0x68], 1
test eax, eax
jne 0x41323e
mov eax, dword [esp + 0x6c]
mov dword [esp], eax
call sub.msvcrt.dll_free
jmp 0x4130c7
mov ebp, dword [esp + 0x60]
mov eax, edi
mov dword [esp + 0x84], edi
mov edi, dword [esp + 0x74]
fld dword [esp + 0x78]
test eax, eax
je 0x4130c5
fld st(0)
fchs
mov edx, dword [esp + 0x6c]
mov dword [esp + 0x74], edx
lea eax, [edx + edi]
mov dword [esp + 0x7c], eax
xor eax, eax
add eax, dword [edx]
add edx, 4
cmp dword [esp + 0x7c], edx
jne 0x413432
fxch st(1)
fstp dword [esp + 0x5c]
fstp dword [esp + 0x58]
lea eax, [eax + eax*4 + 5]
shl eax, 2
mov dword [esp], eax
call sub.msvcrt.dll_malloc
mov dword [esp + 0x60], eax
test eax, eax
je 0x4135f5
xor ebx, ebx
mov dword [esp + 0x78], 0
fld dword [esp + 0x5c]
fld dword [esp + 0x58]
mov eax, dword [esp + 0x84]
mov ecx, dword [esp + 0x78]
lea esi, [eax + ecx*8]
mov eax, dword [esp + 0x74]
mov eax, dword [eax]
mov dword [esp + 0x5c], eax
add ecx, eax
mov dword [esp + 0x78], ecx
lea ecx, [eax - 1]
test eax, eax
jle 0x413538
fld dword [esi + ecx*8 + 4]
xor edx, edx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x88], ebp
jmp 0x4134fd
fld st(0)
mov eax, ebp
mov ebp, edi
mov edi, eax
mov eax, 1
mov dword [ecx + 0x10], eax
fld dword [ebp]
fmul st(5)
fldz
fadd st(1), st(0)
fxch st(1)
fstp dword [ecx]
fxch st(3)
fmul st(4)
fadd st(3)
fstp dword [ecx + 4]
fld dword [edi]
fmul st(5)
fadd st(3)
fstp dword [ecx + 8]
fmul st(3)
faddp st(2)
fxch st(1)
fstp dword [ecx + 0xc]
inc dword [esp + 0x58]
jmp 0x4134f0
fstp st(1)
lea eax, [edx + 1]
mov ecx, edx
cmp dword [esp + 0x5c], eax
je 0x41352b
mov edx, eax
fld dword [esi + edx*8 + 4]
fcom st(1)
fnstsw ax
test ah, 0x40
jne 0x4134ee
lea ebp, [esi + edx*8]
lea edi, [esi + ecx*8]
mov ecx, dword [esp + 0x58]
lea ecx, [ecx + ecx*4]
mov ebx, dword [esp + 0x60]
lea ecx, [ebx + ecx*4]
test ah, 1
jne 0x4134b0
fld st(0)
fxch st(2)
xor eax, eax
jmp 0x4134bd
fstp st(0)
mov ebx, dword [esp + 0x58]
mov ebp, dword [esp + 0x88]
add dword [esp + 0x74], 4
mov eax, dword [esp + 0x74]
cmp dword [esp + 0x7c], eax
jne 0x413474
fstp st(0)
fstp st(0)
mov dword [esp + 0x5c], ebx
mov edx, ebx
mov eax, dword [esp + 0x60]
call fcn.0040b7b0
dec ebx
jle 0x4135c9
mov eax, dword [esp + 0x60]
add eax, 0x14
mov dword [esp + 0x58], eax
mov ecx, 5
lea edi, [esp + 0xbc]
mov esi, dword [esp + 0x58]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x58]
fld dword [esi + 4]
mov edx, esi
mov ebx, dword [esp + 0x68]
jmp 0x4135a2
lea esi, [edx - 0x14]
mov ecx, 5
mov edi, edx
rep movsd dword es:[edi], dword [esi]
sub edx, 0x14
dec ebx
je 0x413615
fcom dword [edx - 0x10]
fnstsw ax
test ah, 1
jne 0x413590
fstp st(0)
cmp dword [esp + 0x68], ebx
jne 0x413617
inc dword [esp + 0x68]
mov eax, dword [esp + 0x68]
add dword [esp + 0x58], 0x14
mov ebx, dword [esp + 0x5c]
cmp eax, ebx
jne 0x41356c
mov eax, dword [esp + 0x80]
mov dword [esp + 4], eax
mov dword [esp], ebp
mov ecx, dword [esp + 0x5c]
mov ebx, dword [esp + 0x60]
mov edx, ebx
lea eax, [esp + 0xac]
call fcn.004284d0
mov dword [esp], ebx
call sub.msvcrt.dll_free
mov eax, dword [esp + 0x6c]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov eax, dword [esp + 0x84]
mov dword [esp], eax
call sub.msvcrt.dll_free
jmp 0x4130c7
fstp st(0)
lea eax, [ebx + ebx*4]
mov ebx, dword [esp + 0x60]
lea eax, [ebx + eax*4]
mov ecx, 5
mov edi, eax
lea esi, [esp + 0xbc]
rep movsd dword es:[edi], dword [esi]
jmp 0x4135b4
mov dword [esp + 0xbc], 1
mov dword [esp + 0xc0], 0x468040
mov dword [esp + 0xc4], 0x468057
lea eax, [esp + 0xbc]
mov dword [esp], eax
call fcn.00411650
lea esi, [esi]
lea esi, [esi]