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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x70
push ebx
mov ebx, dword [ebp + 8]
mov eax, ecx
mov dword [ebp - 8], eax
push esi
push edi
test ebx, ebx
jne 0x4288c1
lea eax, [ebx + 1]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov esi, dword [eax + 0x70]
mov dword [ebx + 8], 0
mov dword [ebx + 0x20], 0
mov dword [ebx + 0x24], 0
mov eax, dword [esi + 0x280]
mov dword [ebx + 0x28], 0
mov dword [ebx + 0x2c], 0
mov dword [ebx + 0x30], 0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
mov dword [ebx + 0x34], 0
addsd xmm0, qword [eax*8 + 0x513d40]
mulsd xmm0, qword [0x513c88]
mulsd xmm0, qword [0x513b00]
call fcn.004f3af0
mov esi, dword [esi + 0x4d8]
xorps xmm0, xmm0
mov dword [ebx + 0x38], eax
mov dword [ebx + 0x3c], edx
mov dword [ebx + 0x48], eax
lea edi, [esi + 0x48]
mov dword [ebx + 0x4c], edx
push edi
mov dword [ebx + 0x40], 0
mov dword [ebx + 0x44], 0
mov dword [ebx + 0x50], 0
mov dword [ebx + 0x54], 0
mov dword [ebx + 0x60], 0
mov dword [ebx + 0x64], 0
mov dword [ebx + 0x6c], 0
mov dword [ebx + 0x70], 0
mov dword [ebx + 0x74], 0x12c
mov dword [ebx + 0x7c], 0
mov dword [ebx + 0x80], 0
movlpd qword [ebp - 0x64], xmm0
mov dword [ebp - 0x28], 0
movlpd qword [ebp - 0x6c], xmm0
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov edx, dword [esi + 0x60]
mov eax, edx
mov ecx, dword [esi + 0x64]
cmp edx, ecx
mov dword [ebp - 0x3c], ecx
cmovbe eax, ecx
mov dword [ebp - 0x38], edx
add eax, 0x20
mov ecx, 0x20
cmp eax, ecx
mov edx, ecx
cmovbe edx, eax
test edx, edx
je 0x4289d9
sub ecx, edx
or eax, 0xffffffff
shr eax, cl
and eax, dword [esi + 0x68]
mov dword [ebp - 0x2c], eax
jmp 0x4289e0
mov dword [ebp - 0x2c], 0
mov eax, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push edi
mov dword [ebp - 0xc], eax
call eax
mov ecx, dword [ebp - 8]
mov eax, dword [ecx + 0x70]
mov esi, dword [eax + 0x4c8]
lea eax, [ebp - 0x40]
push eax
mov ecx, esi
call fcn.0047ac20
test eax, eax
je 0x428a11
lea eax, [ebp - 0x40]
mov ecx, esi
push eax
call fcn.0047acd0
mov esi, dword [ebp - 8]
lea eax, [esi + 4]
push eax
mov dword [ebp - 0x54], eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov edx, dword [esi + 0x40]
mov dword [ebp - 0x30], edx
test edx, edx
je 0x428d27
mov eax, 0x20
mov dword [ebp - 0x34], edx
sub eax, dword [ebp - 0x38]
mov dword [ebp - 0x48], eax
mov eax, 0x20
sub eax, dword [ebp - 0x3c]
mov dword [ebp - 0x50], eax
mov eax, dword [ebp - 0x60]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x64]
mov dword [ebp - 0x1c], eax
mov eax, dword [esi + 0x70]
mov edi, dword [eax + 0x49c]
mov eax, dword [edi + 8]
cmp dword [eax + 0x20], 0
jne 0x428b9c
lea eax, [edi + 0x14]
push eax
mov dword [ebp - 0x18], eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
xorps xmm0, xmm0
xor esi, esi
movlpd qword [ebp - 0x14], xmm0
movlpd qword [ebp - 0x64], xmm0
cmp esi, 1
ja 0x428b93
mov eax, dword [ebp - 0x34]
inc esi
mov ecx, dword [edi + 0x30]
add eax, 0x14
je 0x428ad3
push 0
lea edx, [ebp - 0x44]
push edx
lea edx, [ebp - 0x58]
push edx
push eax
push ecx
mov ecx, edi
call fcn.004a6960
test eax, eax
jne 0x428a86
mov esi, dword [ebp - 0x44]
push dword [ebp - 0x18]
test esi, esi
je 0x428b96
mov eax, dword [esi + 0x48]
xor edi, edi
mov dword [ebp - 0x10], eax
mov eax, dword [esi + 0x4c]
mov esi, dword [esi + 0x44]
mov dword [ebp - 0x24], eax
jmp 0x428b3c
mov eax, dword [ecx + 0x14]
and al, 3
cmp al, 2
jne 0x428b93
mov eax, dword [ecx + 0x3c]
mov edi, dword [ebp - 0x60]
mov esi, dword [ebp - 0x64]
mov dword [ebp - 0x34], eax
test eax, eax
je 0x428b2d
mov ebx, dword [ecx + 0x38]
mov edx, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x14]
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x10], ecx
nop
mov eax, dword [ebx]
test eax, eax
je 0x428b1f
add ecx, dword [eax + 0x48]
adc edx, dword [eax + 0x4c]
add esi, dword [eax + 0x44]
mov eax, dword [eax + 4]
adc edi, 0
test eax, eax
jne 0x428b06
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x10], ecx
add ebx, 4
sub dword [ebp - 0x34], 1
jne 0x428b00
mov ebx, dword [ebp + 8]
jmp 0x428b39
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x10], eax
push dword [ebp - 0x18]
call dword [ebp - 0xc]
add esi, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x48]
adc edi, dword [ebp - 0x24]
or eax, 0xffffffff
mov edx, dword [ebp - 0x38]
shr eax, cl
neg edx
mov ecx, dword [ebp - 0x30]
sbb edx, edx
and edx, eax
mov eax, dword [ecx + 0x14]
and eax, edx
and edx, dword [ebp - 0x2c]
cmp edx, eax
jne 0x428b79
add dword [ebp - 0x1c], esi
adc dword [ebp - 0x20], edi
add dword [ebx + 0x30], esi
adc dword [ebx + 0x34], edi
add dword [ebx + 0x28], esi
adc dword [ebx + 0x2c], edi
jmp 0x428b99
test byte [ecx + 0x34], 0x20
je 0x428b8b
add dword [ebx + 0x30], esi
adc dword [ebx + 0x34], edi
add dword [ebx + 0x50], esi
adc dword [ebx + 0x54], edi
add dword [ebx + 0x28], esi
adc dword [ebx + 0x2c], edi
jmp 0x428b99
push dword [ebp - 0x18]
call dword [ebp - 0xc]
mov esi, dword [ebp - 8]
mov edi, dword [ebp - 0x30]
mov eax, dword [edi + 0x40]
shr eax, 8
dec eax
movzx eax, al
mov dword [ebp - 0x10], eax
cmp eax, 0xff
jne 0x428bc2
lea eax, [ebp - 0x10]
mov ecx, esi
push eax
push edi
call fcn.004287a0
mov eax, dword [ebp - 0x10]
test eax, eax
je 0x428c03
cmp eax, 1
je 0x428bfb
cmp eax, 2
je 0x428bfb
cmp eax, 6
je 0x428bfb
cmp eax, 0x7d0
je 0x428bfb
cmp eax, 0x7d1
je 0x428bfb
cmp eax, 0x7d5
je 0x428bfb
cmp eax, 5
jne 0x428d11
inc dword [ebx + 0x64]
jmp 0x428d11
test eax, eax
jne 0x428ce7
inc dword [ebx + 0x60]
cmp dword [edi + 0x38], 0
jne 0x428ce7
mov eax, dword [edi + 0x40]
shr eax, 8
dec eax
test al, al
jne 0x428ce7
mov edx, dword [esi + 0x58]
mov eax, dword [edx + 0x90]
mov dword [ebp - 0x30], eax
mov eax, dword [esi + 0x70]
lea esi, [edi + 0x14]
mov ecx, dword [eax + 0x49c]
lea eax, [ebp - 0x30]
push eax
push dword [edx + 0x9c]
lea eax, [edx + 0x10]
push eax
push esi
call fcn.004a73f0
test eax, eax
jne 0x428ce7
cmp dword [ebp - 0x30], 4
mov ecx, dword [ebp - 8]
mov eax, dword [ecx + 0x58]
jb 0x428cd1
mov edx, dword [eax + 0x9c]
mov ecx, dword [edx]
test ecx, ecx
jne 0x428cbb
push ecx
push dword [ebp - 0x30]
mov ecx, eax
push edx
call fcn.004ace30
mov edx, dword [ebp - 8]
mov ecx, dword [edx + 0x58]
test eax, eax
jne 0x428c93
mov ecx, dword [ecx + 0x9c]
mov eax, dword [ecx + 4]
mov eax, dword [ecx + eax*2 + 0x28]
mov dword [edi + 0x38], eax
jmp 0x428ce7
push ecx
lea eax, [ecx + 0x10]
mov ecx, dword [edx + 0x70]
push 0
push eax
push esi
mov ecx, dword [ecx + 0x49c]
call fcn.004a7df0
mov eax, dword [edi + 0x40]
and eax, 0xffff00ff
or eax, 0x10000
mov dword [edi + 0x40], eax
jmp 0x428ce7
mov eax, dword [edi + 0x40]
movzx ecx, cl
and eax, 0xffff00ff
inc ecx
shl ecx, 8
or ecx, eax
mov dword [edi + 0x40], ecx
jmp 0x428ce7
push ecx
mov ecx, dword [ecx + 0x70]
add eax, 0x10
push 0
push eax
push esi
mov ecx, dword [ecx + 0x49c]
call fcn.004a7df0
mov ecx, dword [ebp - 0x50]
or eax, 0xffffffff
mov edx, dword [ebp - 0x3c]
mov esi, dword [ebp - 0x28]
shr eax, cl
neg edx
mov ecx, dword [edi + 0x14]
sbb edx, edx
inc dword [ebx + 0x6c]
and edx, eax
lea eax, [esi + 1]
and ecx, edx
and edx, dword [ebp - 0x2c]
cmp edx, ecx
cmovne eax, esi
mov dword [ebp - 0x28], eax
mov ecx, dword [edi + 0xc]
mov esi, dword [ebp - 8]
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x30], ecx
test ecx, ecx
jne 0x428a54
jmp 0x428d33
mov eax, dword [ebp - 0x60]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x64]
mov dword [ebp - 0x1c], eax
mov eax, dword [esi + 0x48]
mov dword [ebp - 0x30], eax
test eax, eax
je 0x428e78
mov dword [ebp - 0x3c], eax
mov eax, dword [esi + 0x70]
mov edi, dword [eax + 0x49c]
mov eax, dword [edi + 8]
cmp dword [eax + 0x20], 0
jne 0x428e2f
lea eax, [edi + 0x14]
push eax
mov dword [ebp - 0x18], eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
xorps xmm0, xmm0
xor esi, esi
movlpd qword [ebp - 0x64], xmm0
movlpd qword [ebp - 0x4c], xmm0
cmp esi, 1
ja 0x428e26
mov eax, dword [ebp - 0x3c]
inc esi
mov ecx, dword [edi + 0x30]
add eax, 0x14
je 0x428dba
push 0
lea edx, [ebp - 0x50]
push edx
lea edx, [ebp - 0x58]
push edx
push eax
push ecx
mov ecx, edi
call fcn.004a6960
test eax, eax
jne 0x428d76
mov esi, dword [ebp - 0x50]
test esi, esi
je 0x428e26
mov ebx, dword [esi + 0x48]
xor edi, edi
mov eax, dword [esi + 0x4c]
mov esi, dword [esi + 0x44]
jmp 0x428e0a
mov eax, dword [ecx + 0x14]
and al, 3
cmp al, 2
jne 0x428e26
mov eax, dword [ecx + 0x3c]
mov ebx, dword [ebp - 0x64]
mov edi, dword [ebp - 0x48]
mov esi, dword [ebp - 0x4c]
mov dword [ebp - 0x3c], eax
test eax, eax
je 0x428e07
mov edx, dword [ecx + 0x38]
mov ecx, dword [ebp - 0x60]
mov dword [ebp - 0x24], ecx
nop
mov eax, dword [edx]
test eax, eax
je 0x428dfc
add ebx, dword [eax + 0x48]
adc ecx, dword [eax + 0x4c]
add esi, dword [eax + 0x44]
mov eax, dword [eax + 4]
adc edi, 0
test eax, eax
jne 0x428de6
mov dword [ebp - 0x24], ecx
add edx, 4
sub dword [ebp - 0x3c], 1
jne 0x428de0
jmp 0x428e0d
mov eax, dword [ebp - 0x60]
mov dword [ebp - 0x24], eax
push dword [ebp - 0x18]
call dword [ebp - 0xc]
add esi, ebx
mov ebx, dword [ebp + 8]
adc edi, dword [ebp - 0x24]
inc dword [ebx + 8]
add dword [ebx + 0x20], esi
adc dword [ebx + 0x24], edi
jmp 0x428e2c
push dword [ebp - 0x18]
call dword [ebp - 0xc]
mov esi, dword [ebp - 8]
mov ecx, dword [ebp - 0x30]
mov eax, dword [ecx + 0x40]
shr eax, 8
dec eax
movzx eax, al
mov dword [ebp - 0x10], eax
cmp eax, 0xff
jne 0x428e58
lea eax, [ebp - 0x10]
push eax
push ecx
mov ecx, esi
call fcn.004287a0
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x30]
test eax, eax
jne 0x428e65
inc dword [ebx + 0x60]
inc dword [ebx + 0x6c]
inc dword [ebx + 0x70]
mov ecx, dword [ecx + 0xc]
mov eax, ecx
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x30], eax
test ecx, ecx
jne 0x428d44
mov edi, dword [esi + 0x44]
mov eax, dword [ebp - 0x68]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x6c]
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x30], eax
test edi, edi
je 0x429089
test byte [edi + 0x34], 0x80
je 0x429078
mov eax, dword [esi + 0x70]
lea edx, [ebp - 0x10]
push edx
mov dword [ebp - 0x10], 0x10
mov ecx, dword [eax + 0x49c]
mov eax, dword [esi + 0x58]
lea esi, [edi + 0x14]
push dword [eax + 0x9c]
add eax, 0x10
push eax
push esi
call fcn.004a73f0
test eax, eax
jne 0x428f5e
cmp dword [ebp - 0x10], 0x10
jb 0x428f7a
mov ecx, dword [ebp - 8]
mov eax, dword [ecx + 0x58]
mov esi, dword [eax + 0x9c]
cmp dword [esi], 5
jne 0x428f7a
movzx edx, byte [edi + 0x42]
mov eax, edx
and eax, 1
test dl, 2
push dword [esi + 0xc]
push dword [esi + 8]
lea ecx, [eax + 1]
cmove ecx, eax
test dl, 4
push 0
lea eax, [ecx + 1]
cmove eax, ecx
test dl, 8
lea ecx, [eax + 1]
cmove ecx, eax
test dl, 0x10
lea eax, [ecx + 1]
cmove eax, ecx
test dl, 0x20
lea ecx, [eax + 1]
cmove ecx, eax
test dl, 0x40
lea eax, [ecx + 1]
cmove eax, ecx
test dl, 0x80
lea ecx, [eax + 1]
cmove ecx, eax
push ecx
call fcn.004f3300
shrd eax, edx, 3
sar edx, 3
add dword [ebx + 0x28], eax
adc dword [ebx + 0x2c], edx
add dword [ebp - 0x30], eax
adc dword [ebp - 0x2c], edx
inc dword [ebx + 0x7c]
jmp 0x428f7a
mov edx, dword [ebp - 0x40]
mov ecx, dword [edi + 0x4c]
lea eax, [edx - 0x3c]
cmp eax, ecx
ja 0x4290a5
lea eax, [edx + 0x78]
cmp ecx, eax
ja 0x4290a5
mov esi, dword [ebp - 8]
mov eax, dword [esi + 0x70]
mov edi, dword [eax + 0x49c]
mov eax, dword [edi + 8]
cmp dword [eax + 0x20], 0
jne 0x429075
lea eax, [edi + 0x14]
push eax
mov dword [ebp - 0x10], eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
xorps xmm0, xmm0
xor esi, esi
movlpd qword [ebp - 0x64], xmm0
movlpd qword [ebp - 0x4c], xmm0
nop
cmp esi, 1
ja 0x42906c
mov eax, dword [ebp - 0x18]
inc esi
mov ecx, dword [edi + 0x30]
add eax, 0x14
je 0x428ffa
push 0
lea edx, [ebp - 0x50]
push edx
lea edx, [ebp - 0x58]
push edx
push eax
push ecx
mov ecx, edi
call fcn.004a6960
test eax, eax
jne 0x428fb0
mov esi, dword [ebp - 0x50]
push dword [ebp - 0x10]
test esi, esi
je 0x42906f
mov eax, dword [esi + 0x4c]
xor edi, edi
mov ebx, dword [esi + 0x48]
mov esi, dword [esi + 0x44]
mov dword [ebp - 0x24], eax
jmp 0x429050
mov eax, dword [ecx + 0x14]
and al, 3
cmp al, 2
jne 0x42906c
mov eax, dword [ecx + 0x3c]
mov ebx, dword [ebp - 0x64]
mov edi, dword [ebp - 0x48]
mov esi, dword [ebp - 0x4c]
mov dword [ebp - 0x3c], eax
test eax, eax
je 0x429047
mov edx, dword [ecx + 0x38]
mov ecx, dword [ebp - 0x60]
mov dword [ebp - 0x24], ecx
nop
mov eax, dword [edx]
test eax, eax
je 0x42903c
add ebx, dword [eax + 0x48]
adc ecx, dword [eax + 0x4c]
add esi, dword [eax + 0x44]
mov eax, dword [eax + 4]
adc edi, 0
test eax, eax
jne 0x429026
mov dword [ebp - 0x24], ecx
add edx, 4
sub dword [ebp - 0x3c], 1
jne 0x429020
jmp 0x42904d
mov eax, dword [ebp - 0x60]
mov dword [ebp - 0x24], eax
push dword [ebp - 0x10]
call dword [ebp - 0xc]
add esi, ebx
mov ebx, dword [ebp + 8]
adc edi, dword [ebp - 0x24]
inc dword [ebx + 8]
add dword [ebx + 0x20], esi
adc dword [ebx + 0x24], edi
add dword [ebx + 0x30], esi
adc dword [ebx + 0x34], edi
jmp 0x429072
push dword [ebp - 0x10]
call dword [ebp - 0xc]
mov esi, dword [ebp - 8]
mov edi, dword [ebp - 0x18]
mov edi, dword [edi + 0xc]
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x18], edi
test edi, edi
jne 0x428e95
mov ecx, dword [ebx + 0x3c]
mov edi, dword [ebx + 0x2c]
mov eax, dword [ebx + 0x38]
mov esi, dword [ebx + 0x28]
cmp ecx, edi
jl 0x4290ec
jg 0x42909f
cmp eax, esi
jbe 0x4290ec
sub eax, esi
sbb ecx, edi
jmp 0x4290fa
push ecx
mov ecx, dword [ebp - 8]
push 0
push 0
push esi
mov ecx, dword [ecx + 0x70]
mov dword [ebp - 0x48], edi
mov ecx, dword [ecx + 0x49c]
call fcn.004a7df0
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x10]
push eax
push esi
mov esi, dword [ebp - 8]
mov ecx, esi
call fcn.004294b0
mov edi, dword [ebp - 0x24]
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x18], edi
cmp eax, edi
jne 0x429078
push eax
push dword [ebp - 0x10]
mov ecx, esi
call fcn.0042cfe0
jmp 0x429081
xorps xmm0, xmm0
movlpd qword [ebp - 0x6c], xmm0
mov ecx, dword [ebp - 0x68]
mov eax, dword [ebp - 0x6c]
mov dword [ebx + 0x38], eax
xorps xmm0, xmm0
mov eax, esi
mov dword [ebx + 0x3c], ecx
or eax, edi
movsd xmm2, qword [0x513bf0]
jne 0x429116
xorps xmm1, xmm1
jmp 0x42914b
mov edx, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x1c]
call fcn.004f3ba0
mov edx, edi
movsd qword [ebp - 0x6c], xmm0
mov ecx, esi
call fcn.004f3ba0
movsd xmm1, qword [ebp - 0x6c]
divsd xmm1, xmm0
movsd xmm2, qword [0x513bf0]
xorps xmm0, xmm0
mulsd xmm1, xmm2
cvtpd2ps xmm1, xmm1
movss dword [ebx + 0x58], xmm1
mov edx, dword [ebx + 0x6c]
mov ecx, dword [ebx + 0x74]
sub ecx, edx
cmp edx, dword [ebx + 0x74]
sbb eax, eax
and eax, ecx
mov dword [ebx + 0x74], eax
test edx, edx
je 0x42919d
mov eax, dword [ebp - 0x28]
movd xmm0, edx
cvtdq2pd xmm0, xmm0
movd xmm1, eax
cvtdq2pd xmm1, xmm1
shr eax, 0x1f
shr edx, 0x1f
addsd xmm0, qword [edx*8 + 0x513d40]
addsd xmm1, qword [eax*8 + 0x513d40]
divsd xmm1, xmm0
mulsd xmm1, xmm2
cvtpd2ps xmm0, xmm1
mov eax, dword [ebp - 0x28]
movss dword [ebx + 0x5c], xmm0
mov dword [ebx + 0x68], eax
mov eax, dword [ebp - 0x1c]
mov dword [ebx + 0x40], eax
mov eax, dword [ebp - 0x20]
push 0
mov dword [ebx + 0x44], eax
mov eax, dword [ebp - 0x2c]
push 0x100000
push eax
mov eax, dword [ebp - 0x30]
push eax
call fcn.004f35c0
push dword [ebp - 0x54]
mov dword [ebx + 0x80], eax
call dword [ebp - 0xc]
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 4