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

Disassembly:
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
sub esp, 0x70
push ebx
mov ebx, dword [esp + 0x84]
push ebp
mov ebp, dword [esp + 0x7c]
cmp dword [ebp + 4], 0
push esi
mov esi, dword [esp + 0x84]
push edi
je 0x4319d4
test esi, esi
je 0x4319d4
cmp dword [esp + 0x8c], 0
je 0x4319d4
test eax, eax
je 0x4319d4
test ecx, ecx
je 0x4319d4
cmp byte [ebp + 0x182], 0
je 0x4319d4
test eax, eax
jge 0x43195c
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x98], eax
test ecx, ecx
jge 0x43196a
mov ecx, dword [ebp + 0x10]
mov dword [esp + 0x9c], ecx
cmp dword [ebp + 0x14c], 0
push esi
setge byte [esp + 0x1b]
cmp dword [ebp + 0x1bc], 0
setne byte [esp + 0x88]
call dword [0x4d50a4]
mov edi, eax
xor eax, eax
test edi, edi
mov dword [esp + 0x50], edi
je 0x4319d6
lea edx, [esp + 0x68]
push edx
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x90]
push 0x18
push eax
call dword [0x4d50ac]
test eax, eax
jne 0x4319e0
push edi
push esi
call dword [0x4d50a0]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x70
ret 0x1c
mov eax, dword [esp + 0x74]
mov ecx, eax
and ecx, 0x80000003
jns 0x4319f3
dec ecx
or ecx, 0xfffffffc
inc ecx
je 0x431a0d
add eax, 1
mov edx, eax
and edx, 0x80000003
jns 0x431a07
dec edx
or edx, 0xfffffffc
inc edx
jne 0x4319f5
mov dword [esp + 0x74], eax
mov edx, dword [esp + 0x94]
mov esi, dword [esp + 0x70]
xor eax, eax
test edx, edx
setl al
sub eax, 1
and eax, edx
cmp esi, eax
jge 0x431a2e
mov dword [esp + 0x5c], esi
jmp 0x431a3e
xor eax, eax
test edx, edx
setl al
sub eax, 1
and eax, edx
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x6c]
xor ecx, ecx
test ebx, ebx
setl cl
sub ecx, 1
and ecx, ebx
cmp eax, ecx
jge 0x431a58
mov dword [esp + 0x58], eax
jmp 0x431a68
xor ecx, ecx
test ebx, ebx
setl cl
sub ecx, 1
and ecx, ebx
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x98]
add ecx, ebx
cmp eax, ecx
mov edi, eax
jl 0x431a79
mov edi, ecx
test edi, edi
jge 0x431a81
xor eax, eax
jmp 0x431a87
cmp eax, ecx
jl 0x431a87
mov eax, ecx
mov ecx, dword [esp + 0x9c]
lea edi, [edx + ecx]
cmp esi, edi
mov ecx, esi
jl 0x431a99
mov ecx, edi
test ecx, ecx
jge 0x431aa1
xor edi, edi
jmp 0x431aa7
cmp esi, edi
jge 0x431aa7
mov edi, esi
sub eax, dword [esp + 0x58]
mov ebx, edi
sub ebx, dword [esp + 0x5c]
test eax, eax
mov dword [esp + 0x18], eax
jle 0x4319d4
test ebx, ebx
jle 0x4319d4
cmp dword [esp + 0x98], 0
jle 0x4319d4
cmp dword [esp + 0x9c], 0
jle 0x4319d4
cmp byte [esp + 0x17], 0
jne 0x431d01
cmp byte [esp + 0x84], 0
jne 0x431d01
cmp byte [ebp + 0x181], 0
jne 0x431d01
cmp dword [esp + 0x7c], 0
je 0x4324a3
fild dword [ebp + 0xc]
mov esi, dword [ebp + 0x10]
mov edx, edi
sub edx, dword [esp + 0x94]
fidiv dword [esp + 0x98]
mov dword [esp + 0x98], esi
fstp dword [esp + 0x8c]
fild dword [esp + 0x98]
mov dword [esp + 0x98], edx
fidiv dword [esp + 0x9c]
fstp dword [esp + 0x9c]
fild dword [esp + 0x98]
fld dword [esp + 0x9c]
fld st(0)
fmulp st(2)
fxch st(1)
call fcn.004c9320
sub esi, eax
test ebx, ebx
mov dword [esp + 0x98], esi
fild dword [esp + 0x98]
fstp dword [esp + 0x98]
jle 0x4324a1
mov ecx, dword [esp + 0x90]
lea eax, [ecx*4]
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x58]
sub eax, ecx
mov dword [esp + 0x9c], eax
fild dword [esp + 0x9c]
fld dword [esp + 0x8c]
neg edi
fld st(0)
mov dword [esp + 0x9c], edi
fmulp st(2)
mov dword [esp + 0x8c], ebx
fxch st(1)
fstp dword [esp + 0x94]
fld dword [esp + 0x94]
fld dword [esp + 0x98]
fld st(0)
call fcn.004c9320
fxch st(1)
mov edx, dword [esp + 0x9c]
fst dword [esp + 0x98]
mov ebx, dword [ebp + 0x30]
xor ecx, ecx
test eax, eax
setl cl
sub ecx, 1
and ecx, eax
mov eax, dword [esp + 0x70]
lea edi, [edx + eax]
imul edi, dword [esp + 0x74]
add edi, dword [esp + 0x90]
mov esi, ecx
add edi, dword [esp + 0x7c]
imul ebx, esi
add ebx, dword [ebp + 0x34]
cmp dword [esp + 0x18], 0
jle 0x431cd2
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x94], ecx
fld dword [esp + 0x98]
fld st(0)
call fcn.004c9320
xor ecx, ecx
test eax, eax
setl cl
sub ecx, 1
and ecx, eax
cmp dword [ebp + 0x28], 0
je 0x431c96
mov eax, ebp
call fcn.0043e1b0
mov ecx, ebp
push eax
lea eax, [esp + 0x88]
call fcn.0043e150
mov edx, dword [eax]
mov dword [esp + 0x98], edx
mov al, byte [esp + 0x9a]
mov dl, byte [esp + 0x99]
mov cl, byte [esp + 0x98]
jmp 0x431ca6
lea eax, [ebx + ecx*2]
add eax, ecx
mov cl, byte [eax]
mov dl, byte [eax + 1]
add eax, 1
mov al, byte [eax + 1]
mov byte [edi], cl
fadd st(3)
add edi, 1
mov byte [edi], dl
add edi, 1
fstp dword [esp + 0x98]
mov byte [edi], al
add edi, 1
mov byte [edi], 0xff
add edi, 1
sub dword [esp + 0x94], 1
jne 0x431c40
fld st(3)
mov eax, 1
add dword [esp + 0x9c], eax
faddp st(2)
sub dword [esp + 0x8c], eax
fxch st(1)
fstp dword [esp + 0x98]
jne 0x431bde
fstp st(1)
fstp st(0)
jmp 0x4324a1
lea eax, [esp + 0x48]
mov ecx, ebp
mov byte [esp + 0x8c], 0
mov byte [esp + 0x8d], 0
mov byte [esp + 0x8e], 0
mov byte [esp + 0x8f], 0
call fcn.0043d190
cmp dword [esp + 0x7c], 0
mov eax, dword [ebp + 0x14c]
mov dword [esp + 0x44], eax
mov dword [esp + 0x24], 0
je 0x4324a3
mov eax, dword [ebp + 0xc]
cmp dword [esp + 0x98], eax
mov dword [esp + 0x4c], eax
jne 0x4320a6
mov eax, dword [ebp + 0x10]
cmp dword [esp + 0x9c], eax
jne 0x4320a6
sub eax, edi
add eax, dword [esp + 0x94]
test ebx, ebx
mov dword [esp + 0x20], eax
jle 0x4324a3
mov ecx, dword [esp + 0x90]
mov eax, dword [esp + 0x58]
sub eax, ecx
add ecx, ecx
add ecx, ecx
neg edi
mov dword [esp + 0x4c], eax
mov dword [esp + 0x90], ecx
mov dword [esp + 0x30], edi
mov dword [esp + 0x40], ebx
jmp 0x431db4
mov esi, dword [esp + 0x70]
mov edx, dword [esp + 0x20]
mov eax, dword [ebp + 0xc]
mov ecx, dword [esp + 0x4c]
imul eax, edx
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x30]
lea edi, [eax + esi]
imul edi, dword [esp + 0x74]
mov eax, dword [ebp + 0x30]
add edi, dword [esp + 0x90]
imul eax, edx
add edi, dword [esp + 0x7c]
mov dword [esp + 0x1c], ecx
lea ecx, [ecx + ecx*2]
add eax, ecx
add eax, dword [ebp + 0x34]
cmp dword [esp + 0x18], 0
mov dword [esp + 0x38], eax
jle 0x43208a
mov edx, dword [esp + 0x18]
mov dword [esp + 0x3c], edx
cmp byte [esp + 0x84], 0
je 0x431e25
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x34]
mov edx, dword [ebp + 0x1bc]
add eax, ecx
mov al, byte [eax + edx]
jmp 0x431e27
or al, 0xff
movzx ebx, byte [ebp + 0x180]
add ebx, 1
movzx eax, al
imul ebx, eax
sar ebx, 8
cmp dword [ebp + 0x28], 0
je 0x431e89
mov esi, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
mov eax, ebp
call fcn.0043e1b0
movzx eax, al
mov dword [esp + 0x24], eax
push eax
lea eax, [esp + 0x58]
mov ecx, ebp
call fcn.0043e150
cmp byte [ebp + 0x181], 0
mov eax, dword [eax]
mov dword [esp + 0x8c], eax
je 0x431ebf
mov ecx, eax
shr ecx, 0x18
movzx edx, bl
add ecx, 1
imul ecx, edx
sar ecx, 8
mov bl, cl
jmp 0x431ebf
mov eax, dword [esp + 0x38]
movzx ecx, byte [eax]
mov dl, byte [eax + 1]
add eax, 1
add eax, 1
mov byte [esp + 0x8c], cl
movzx ecx, byte [eax]
add eax, 1
mov byte [esp + 0x8d], dl
mov byte [esp + 0x8e], cl
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x8c]
cmp dword [ebp + 0x28], 0
je 0x431ecf
mov edx, dword [esp + 0x44]
cmp dword [esp + 0x24], edx
jmp 0x431ed3
cmp eax, dword [esp + 0x48]
jne 0x431ee0
cmp byte [esp + 0x17], 0
jne 0x432074
test bl, bl
je 0x432074
cmp bl, 0xff
jne 0x431f1b
mov al, byte [esp + 0x8c]
mov cl, byte [esp + 0x8d]
mov dl, byte [esp + 0x8e]
mov byte [edi], al
add edi, 1
mov byte [edi], cl
add edi, 1
mov byte [edi], dl
add edi, 1
mov byte [edi], bl
add edi, 1
jmp 0x432077
movzx eax, byte [edi + 1]
movzx edx, byte [edi]
xor ecx, ecx
mov ch, byte [edi + 3]
mov cl, byte [edi + 2]
shl ecx, 8
or ecx, eax
movzx eax, byte [esp + 0x8e]
shl ecx, 8
or ecx, edx
xor edx, edx
mov dh, bl
mov dword [esp + 0x9c], ecx
or edx, eax
movzx eax, byte [esp + 0x8d]
shl edx, 8
or edx, eax
movzx eax, byte [esp + 0x8c]
shl edx, 8
or edx, eax
mov dword [esp + 0x94], edx
mov al, byte [esp + 0x97]
test al, al
je 0x432072
cmp al, 0xff
jne 0x431f84
mov ecx, edx
jmp 0x432072
mov bl, byte [esp + 0x9f]
movzx eax, al
movzx esi, bl
mov ecx, esi
imul ecx, eax
mov dword [esp + 0x28], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
sub bl, al
add bl, byte [esp + 0x97]
mov byte [esp + 0x98], bl
je 0x432064
movzx edx, byte [esp + 0x9c]
movzx eax, bl
shl eax, 8
mov dword [esp + 0x2c], eax
movzx eax, byte [esp + 0x94]
imul eax, dword [esp + 0x28]
mov ebx, edx
imul edx, ecx
imul ebx, esi
add eax, ebx
shl eax, 8
sub eax, edx
cdq
idiv dword [esp + 0x2c]
movzx edx, byte [esp + 0x9d]
mov ebx, edx
imul edx, ecx
imul ebx, esi
mov byte [esp + 0x9c], al
movzx eax, byte [esp + 0x95]
imul eax, dword [esp + 0x28]
add eax, ebx
shl eax, 8
sub eax, edx
cdq
idiv dword [esp + 0x2c]
movzx edx, byte [esp + 0x9e]
mov ebx, edx
imul edx, ecx
imul ebx, esi
mov byte [esp + 0x9d], al
movzx eax, byte [esp + 0x96]
imul eax, dword [esp + 0x28]
add eax, ebx
shl eax, 8
sub eax, edx
cdq
idiv dword [esp + 0x2c]
mov bl, byte [esp + 0x98]
mov byte [esp + 0x9e], al
mov byte [esp + 0x9f], bl
mov ecx, dword [esp + 0x9c]
mov dword [edi], ecx
add edi, 4
mov eax, 1
add dword [esp + 0x1c], eax
sub dword [esp + 0x3c], eax
jne 0x431e06
mov eax, 1
add dword [esp + 0x30], eax
add dword [esp + 0x20], eax
sub dword [esp + 0x40], eax
jne 0x431db0
jmp 0x4324a3
fild dword [esp + 0x4c]
mov ecx, edi
sub ecx, dword [esp + 0x94]
test ebx, ebx
fidiv dword [esp + 0x98]
fstp dword [esp + 0x4c]
fild dword [ebp + 0x10]
fstp dword [esp + 0x98]
fld dword [esp + 0x98]
mov dword [esp + 0x98], ecx
fld st(0)
fidiv dword [esp + 0x9c]
fstp dword [esp + 0x9c]
fild dword [esp + 0x98]
fld dword [esp + 0x9c]
fld st(0)
fmulp st(2)
fxch st(2)
fsubrp st(1)
fstp dword [esp + 0x98]
jle 0x4324a1
mov ecx, dword [esp + 0x90]
mov eax, dword [esp + 0x58]
sub eax, ecx
mov dword [esp + 0x9c], eax
fild dword [esp + 0x9c]
fld dword [esp + 0x4c]
lea edx, [ecx*4]
fld st(0)
neg edi
fmulp st(2)
mov dword [esp + 0x90], edx
fxch st(1)
mov dword [esp + 0x28], edi
mov dword [esp + 0x3c], ebx
fstp dword [esp + 0x9c]
fldz
fld dword [esp + 0x9c]
jmp 0x43215e
mov esi, dword [esp + 0x70]
fld dword [esp + 0x98]
fcom st(2)
fnstsw ax
test ah, 5
jp 0x432176
xor ecx, ecx
mov dword [esp + 0x20], ecx
jmp 0x432183
fld st(0)
call fcn.004c9320
mov dword [esp + 0x20], eax
mov ecx, eax
mov eax, dword [ebp + 0xc]
fxch st(1)
imul eax, ecx
fst dword [esp + 0x98]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x28]
lea edi, [eax + esi]
imul edi, dword [esp + 0x74]
mov eax, dword [ebp + 0x30]
add edi, dword [esp + 0x90]
imul eax, ecx
add eax, dword [ebp + 0x34]
add edi, dword [esp + 0x7c]
cmp dword [esp + 0x18], 0
mov dword [esp + 0x4c], eax
jle 0x43247b
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x40], ecx
fld dword [esp + 0x98]
fcom st(3)
fnstsw ax
test ah, 5
jp 0x4321e1
xor eax, eax
jmp 0x4321e8
fld st(0)
call fcn.004c9320
cmp byte [esp + 0x84], 0
mov dword [esp + 0x98], eax
je 0x43220a
mov edx, dword [esp + 0x34]
mov ecx, dword [ebp + 0x1bc]
add eax, edx
mov al, byte [eax + ecx]
jmp 0x43220c
or al, 0xff
movzx ebx, byte [ebp + 0x180]
mov ecx, dword [esp + 0x98]
add ebx, 1
movzx edx, al
imul ebx, edx
sar ebx, 8
cmp dword [ebp + 0x28], 0
je 0x43227f
mov esi, dword [esp + 0x20]
mov eax, ebp
call fcn.0043e1b0
mov ecx, dword [esp + 0x98]
movzx eax, al
mov dword [esp + 0x24], eax
mov eax, ebp
call fcn.0043e1b0
mov ecx, ebp
push eax
lea eax, [esp + 0x58]
call fcn.0043e150
cmp byte [ebp + 0x181], 0
mov eax, dword [eax]
mov dword [esp + 0x8c], eax
je 0x4322af
mov ecx, eax
shr ecx, 0x18
movzx edx, bl
add ecx, 1
imul ecx, edx
sar ecx, 8
mov bl, cl
jmp 0x4322af
mov eax, dword [esp + 0x4c]
lea eax, [eax + ecx*2]
add eax, ecx
mov cl, byte [eax]
mov dl, byte [eax + 1]
add eax, 1
mov al, byte [eax + 1]
mov byte [esp + 0x8c], cl
mov byte [esp + 0x8d], dl
mov byte [esp + 0x8e], al
mov eax, dword [esp + 0x8c]
cmp dword [ebp + 0x28], 0
je 0x4322bf
mov ecx, dword [esp + 0x44]
cmp dword [esp + 0x24], ecx
jmp 0x4322c3
cmp eax, dword [esp + 0x48]
jne 0x4322d0
cmp byte [esp + 0x17], 0
jne 0x432464
test bl, bl
je 0x432464
cmp bl, 0xff
jne 0x43230b
mov dl, byte [esp + 0x8c]
mov al, byte [esp + 0x8d]
mov cl, byte [esp + 0x8e]
mov byte [edi], dl
add edi, 1
mov byte [edi], al
add edi, 1
mov byte [edi], cl
add edi, 1
mov byte [edi], bl
add edi, 1
jmp 0x432467
movzx edx, byte [edi + 1]
movzx eax, byte [edi]
xor ecx, ecx
mov ch, byte [edi + 3]
mov cl, byte [edi + 2]
shl ecx, 8
or ecx, edx
xor edx, edx
mov dh, bl
shl ecx, 8
or ecx, eax
movzx eax, byte [esp + 0x8e]
mov dword [esp + 0x9c], ecx
or edx, eax
movzx eax, byte [esp + 0x8d]
shl edx, 8
or edx, eax
movzx eax, byte [esp + 0x8c]
shl edx, 8
or edx, eax
mov dword [esp + 0x94], edx
mov al, byte [esp + 0x97]
test al, al
je 0x432462
cmp al, 0xff
jne 0x432374
mov ecx, edx
jmp 0x432462
mov bl, byte [esp + 0x9f]
movzx eax, al
movzx esi, bl
mov ecx, esi
imul ecx, eax
mov dword [esp + 0x30], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
sub bl, al
add bl, byte [esp + 0x97]
mov byte [esp + 0x98], bl
je 0x432454
movzx edx, byte [esp + 0x9c]
movzx eax, bl
shl eax, 8
mov dword [esp + 0x2c], eax
movzx eax, byte [esp + 0x94]
imul eax, dword [esp + 0x30]
mov ebx, edx
imul edx, ecx
imul ebx, esi
add eax, ebx
shl eax, 8
sub eax, edx
cdq
idiv dword [esp + 0x2c]
movzx edx, byte [esp + 0x9d]
mov ebx, edx
imul edx, ecx
imul ebx, esi
mov byte [esp + 0x9c], al
movzx eax, byte [esp + 0x95]
imul eax, dword [esp + 0x30]
add eax, ebx
shl eax, 8
sub eax, edx
cdq
idiv dword [esp + 0x2c]
movzx edx, byte [esp + 0x9e]
mov ebx, edx
imul edx, ecx
imul ebx, esi
mov byte [esp + 0x9d], al
movzx eax, byte [esp + 0x96]
imul eax, dword [esp + 0x30]
add eax, ebx
shl eax, 8
sub eax, edx
cdq
idiv dword [esp + 0x2c]
mov bl, byte [esp + 0x98]
mov byte [esp + 0x9e], al
mov byte [esp + 0x9f], bl
mov ecx, dword [esp + 0x9c]
mov dword [edi], ecx
add edi, 4
sub dword [esp + 0x40], 1
fadd st(4)
fstp dword [esp + 0x98]
jne 0x4321cd
fld st(4)
mov eax, 1
add dword [esp + 0x28], eax
faddp st(2)
sub dword [esp + 0x3c], eax
fxch st(1)
fstp dword [esp + 0x98]
jne 0x43215a
fstp st(1)
fstp st(1)
fstp st(1)
fstp st(0)
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x88]
push ecx
push edx
call dword [0x4d50a0]
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x70
ret 0x1c