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

Disassembly:
mov ecx, dword [0x5d54ec]
mov ecx, dword fs:[ecx]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x422b83
sub esp, 0x48
mov eax, dword [esp + 0x4c]
test byte [eax], al
movzx ecx, byte [esp + 0x50]
test cl, cl
je 0x422923
lea ecx, [eax + 0x50]
mov dword [esp], ecx
mov dword [esp + 4], 0
mov dword [esp + 8], 0
call fcn.00402e80
jmp 0x422959
lea ecx, [eax + 0x68]
lea edx, [eax + 0x50]
mov dword [esp + 0x44], edx
mov dword [esp], ecx
call fcn.00402e60
mov eax, dword [esp + 4]
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x44]
mov dword [esp], edx
add eax, 0x100000
mov dword [esp + 4], eax
adc ecx, 0
mov dword [esp + 8], ecx
call fcn.00402e80
mov eax, dword [esp + 0x4c]
mov dword [esp], eax
call fcn.00402cd0
mov eax, dword [esp + 4]
test eax, eax
jge 0x42297c
mov edx, 0xffffffff
mov ecx, 0xffffffff
jmp 0x422a79
mov dword [esp + 0x20], eax
sar eax, 0x1f
mov dword [esp + 0x38], eax
mov edx, dword [esp + 0x4c]
lea ebx, [edx + 0x80]
lea ebp, [edx + 0x90]
mov dword [esp + 0x44], ebp
mov dword [esp], ebx
call fcn.00402e60
mov eax, dword [esp + 4]
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 8]
mov dword [esp + 0x1c], ecx
mov edx, dword [esp + 0x44]
mov dword [esp], edx
call fcn.00402e60
mov eax, dword [esp + 0x4c]
mov ecx, dword [eax + 0x98]
mov edx, dword [eax + 0x9c]
mov dword [esp + 0x34], edx
mov ebx, dword [esp + 4]
mov ebp, dword [esp + 8]
mov esi, dword [esp + 0x14]
add esi, ecx
mov edi, dword [esp + 0x1c]
adc edi, edx
add esi, ebx
adc edi, ebp
mov eax, dword [esp + 0x20]
mul esi
mov ebx, dword [esp + 0x20]
imul edi, ebx
mov ebx, dword [esp + 0x38]
imul ebx, esi
add edx, ebx
add edx, edi
mov ebx, eax
shr eax, 1
mov esi, eax
mov eax, 0xa3d70a3e
mov edi, edx
mul esi
shr edx, 5
mov dword [esp + 0x30], edx
mov eax, edi
shr edi, 1
mov esi, eax
mov eax, 0xa3d70a3e
mul edi
shr edx, 5
mov dword [esp + 0x2c], edx
mov eax, dword [esp + 0x30]
imul edi, eax, 0x64
sub ebx, edi
imul edi, edx, 0x64
sub esi, edi
mov edi, eax
mov eax, esi
mov ebp, 0x28f5c28
mul ebp
lea ebp, [esi + esi*2]
shl ebp, 5
add ebx, ebp
shr ebx, 1
mov ebp, eax
mov eax, 0xa3d70a3e
mov esi, edx
mul ebx
shr edx, 5
add edi, 0
mov eax, dword [esp + 0x2c]
adc eax, 0
add edi, ebp
adc eax, esi
add edx, edi
adc eax, 0
add ecx, edx
mov edx, dword [esp + 0x34]
adc edx, eax
mov eax, dword [esp + 0x4c]
mov ebx, dword [eax + 0x10]
mov ebp, dword [eax + 0x14]
cmp edx, ebp
xchg esi, ebx
setb bl
xchg esi, ebx
xchg edi, ebx
sete bl
xchg edi, ebx
cmp ecx, ebx
setb al
and edi, eax
or esi, edi
xchg esi, eax
test al, al
xchg esi, eax
jne 0x422aa6
mov ebp, edx
mov ebx, ecx
mov eax, dword [esp + 0x4c]
lea ecx, [eax + 0x48]
lea edx, [eax + 0x80]
mov dword [esp + 0x44], edx
lea esi, [eax + 0x90]
mov dword [esp + 0x40], esi
lea edi, [eax + 0x18]
mov dword [esp + 0x3c], edi
mov dword [esp], ecx
mov dword [esp + 4], ebx
mov dword [esp + 8], ebp
call fcn.00402e80
mov eax, dword [esp + 0x44]
mov dword [esp], eax
call fcn.00402e60
mov eax, dword [esp + 4]
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 8]
mov dword [esp + 0x18], ecx
mov edx, dword [esp + 0x40]
mov dword [esp], edx
call fcn.00402e60
movsd xmm0, qword [0x500b00]
mov eax, dword [esp + 0x4c]
mulsd xmm0, qword [eax + 0x20]
movsd xmm1, qword [0x500b28]
mulsd xmm1, xmm0
movsd qword [esp + 0x24], xmm1
mov ecx, dword [eax + 0x78]
mov eax, dword [eax + 0x7c]
mov edx, dword [esp + 4]
mov ebx, dword [esp + 8]
mov ebp, dword [esp + 0x10]
add ecx, ebp
mov ebp, dword [esp + 0x18]
adc eax, ebp
add ecx, edx
mov dword [esp], ecx
adc eax, ebx
mov dword [esp + 4], eax
call fcn.004604d0
movsd xmm0, qword [esp + 0x24]
mulsd xmm0, qword [esp + 8]
movsd qword [esp], xmm0
call fcn.004603b0
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x3c]
mov dword [esp], edx
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
call fcn.00402e80
add esp, 0x48
ret
call fcn.004662a0
jmp fcn.004228e0