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

Disassembly:
mov eax, 0x473c
call fcn.00584c40
xor eax, eax
mov dword [esp + 0x3c], edx
push ebx
push ebp
mov ebp, ecx
mov dword [esp + 0x20], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x1c], eax
xor al, al
mov byte [esp + 0xb], al
mov al, byte [ebp + 0x1224]
lea edx, [ebp + 0x1402]
inc dword [ebp + 0x1224]
lea ecx, [ebp + 0x10]
and al, 3
mov dword [esp + 0x40], ebp
push esi
mov byte [ebp + 0x12be], al
lea esi, [ebp + 0x2484]
mov eax, dword [ebp + 0x1208]
push edi
push dword [ebp + 0x1200]
shl eax, 2
lea edi, [esp + 0x96c]
add esi, eax
mov dword [esp + 0x48], 0
add edi, eax
mov dword [esp + 0x1c], esi
mov dword [esp + 0x24], edi
call fcn.005608d0
mov edx, dword [ebp + 0x11f8]
add esp, 4
lea eax, [edx + edx*4]
lea ebx, [esi + eax*4]
mov eax, dword [ebp + 0x1200]
lea ecx, [eax - 1]
test ecx, ecx
js 0x5541aa
cmp eax, 4
jl 0x55417d
lea edi, [ecx + 1]
shr edi, 2
lea edx, [ecx - 2]
mov eax, edi
lea esi, [ebp + 0x1400]
neg eax
lea esi, [esi + ecx*2]
lea edx, [ebx + edx*4]
lea ecx, [ecx + eax*4]
nop
movsx eax, word [esi + 2]
lea esi, [esi - 8]
lea edx, [edx - 0x10]
cvtsi2ss xmm0, eax
movss dword [edx + 0x18], xmm0
movsx eax, word [esi + 8]
cvtsi2ss xmm0, eax
movss dword [edx + 0x14], xmm0
movsx eax, word [esi + 6]
cvtsi2ss xmm0, eax
movss dword [edx + 0x10], xmm0
movsx eax, word [esi + 4]
cvtsi2ss xmm0, eax
movss dword [edx + 0xc], xmm0
sub edi, 1
jne 0x554130
mov edx, dword [ebp + 0x11f8]
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x20]
test ecx, ecx
js 0x5541aa
lea edx, [ebp + 0x1402]
lea edx, [edx + ecx*2]
lea ebx, [ebx]
movsx eax, word [edx]
lea edx, [edx - 2]
cvtsi2ss xmm0, eax
movss dword [ebx + ecx*4], xmm0
sub ecx, 1
jns 0x554190
mov edx, dword [ebp + 0x11f8]
movss xmm1, dword [0x5f4518]
lea eax, [edx + edx*4]
movss xmm0, dword [esi + eax*4]
addss xmm0, xmm1
movss dword [esi + eax*4], xmm0
mov eax, dword [ebp + 0x11f8]
mov ecx, dword [ebp + 0x1200]
sar ecx, 3
lea eax, [eax + eax*4]
add ecx, eax
movss xmm0, dword [esi + ecx*4]
addss xmm0, xmm1
movss dword [esi + ecx*4], xmm0
mov eax, dword [ebp + 0x11f8]
mov ecx, dword [ebp + 0x1200]
sar ecx, 3
lea eax, [eax + eax*4]
lea eax, [esi + eax*4]
movss xmm0, dword [eax + ecx*8]
subss xmm0, xmm1
movss dword [eax + ecx*8], xmm0
mov eax, dword [ebp + 0x1200]
sar eax, 3
lea ecx, [eax + eax*2]
mov eax, dword [ebp + 0x11f8]
lea eax, [eax + eax*4]
lea eax, [esi + eax*4]
movss xmm0, dword [eax + ecx*4]
subss xmm0, xmm1
movss dword [eax + ecx*4], xmm0
mov ecx, dword [ebp + 0x1200]
mov eax, dword [ebp + 0x11f8]
sar ecx, 3
shl ecx, 4
add ecx, esi
lea eax, [eax + eax*4]
movss xmm0, dword [ecx + eax*4]
addss xmm0, xmm1
movss dword [ecx + eax*4], xmm0
mov eax, dword [ebp + 0x1200]
sar eax, 3
add eax, dword [ebp + 0x11f8]
lea eax, [eax + eax*4]
movss xmm0, dword [esi + eax*4]
addss xmm0, xmm1
movss dword [esi + eax*4], xmm0
mov eax, dword [ebp + 0x1200]
sar eax, 3
lea ecx, [eax + eax*2]
mov eax, dword [ebp + 0x11f8]
lea eax, [eax + eax*4]
lea eax, [esi + eax*4]
movss xmm0, dword [eax + ecx*8]
subss xmm0, xmm1
movss dword [eax + ecx*8], xmm0
mov eax, dword [ebp + 0x1200]
sar eax, 3
lea ecx, [eax*8]
sub ecx, eax
mov eax, dword [ebp + 0x11f8]
lea eax, [eax + eax*4]
lea eax, [esi + eax*4]
movss xmm0, dword [eax + ecx*4]
subss xmm0, xmm1
movss dword [eax + ecx*4], xmm0
cmp dword [ebp + 0x1264], 0
jne 0x5549e9
lea eax, [esp + 0x968]
mov ecx, ebp
push esi
push eax
lea edx, [esp + 0xe0]
call fcn.00561300
push esi
push edi
lea edx, [esp + 0xe8]
mov ecx, ebp
call fcn.0055f450
mov ebx, dword [esp + 0x4764]
lea eax, [esp + 0x978]
push ebx
push esi
push eax
lea edx, [esp + 0xf4]
mov ecx, ebp
call fcn.00562260
add esp, 0x1c
lea edx, [esp + 0xd8]
mov ecx, ebp
push ebx
call fcn.00561940
add esp, 4
lea eax, [esp + 0x468]
lea edx, [esp + 0xd8]
mov ecx, ebp
push esi
push eax
call fcn.005601c0
mov ecx, dword [ebp + 0x168c]
lea ebx, [ebp + 0x17ec]
add esp, 8
cmp dword [ebp + 0x17e4], 0
lea eax, [ecx + ecx*8]
lea ebx, [ebx + eax*4]
je 0x5544aa
cmp dword [ebp + 0x11cc], 0x4d
jle 0x5544aa
push 0x111c
lea eax, [ebp + 0x90]
mov dword [ebp + ecx*4 + 0x1290], 1
push eax
lea eax, [esp + 0x13f0]
push eax
call fcn.005854c0
add esp, 0xc
lea esi, [ebp + 0x129c]
mov ecx, 9
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp + 0x11fc]
shl eax, 2
push eax
lea eax, [esp + 0xdc]
push eax
lea eax, [esp + 0x70]
push eax
call fcn.005854c0
mov eax, dword [ebp + 0x168c]
add esp, 0xc
test eax, eax
je 0x5543e4
cmp dword [ebp + eax*4 + 0x128c], 0
je 0x5543e4
lea esi, [ebp + 0x11d4]
jmp 0x554409
mov al, byte [ebp + 0x1c18]
lea esi, [ebp + 0x11d4]
mov cl, byte [ebp + 0x17e8]
mov edx, 0x3f
mov byte [esi], al
add cl, byte [ebx]
cmp cl, dl
movzx eax, cl
cmovl edx, eax
mov byte [ebx], dl
push dword [ebp + 0x11fc]
xor eax, eax
lea ecx, [esp + 0x5c]
cmp dword [esp + 0x4758], 2
mov edx, ebx
sete al
push eax
push esi
call fcn.005600b0
mov ecx, dword [ebp + 0x11fc]
add esp, 0xc
xor eax, eax
test ecx, ecx
jle 0x554458
movss xmm1, dword [0x5f4528]
cvtsi2ss xmm0, dword [esp + eax*4 + 0x58]
mulss xmm0, xmm1
movss dword [esp + eax*4 + 0xd8], xmm0
inc eax
cmp eax, ecx
jl 0x554440
lea eax, [esp + 0x468]
mov ecx, ebp
push eax
mov eax, dword [ebp + 0x168c]
lea edx, [esp + 0xdc]
lea eax, [eax + eax*4]
shl eax, 6
add eax, 0x1858
add eax, ebp
push eax
lea eax, [esp + 0x13f0]
push eax
push ebx
call fcn.00561c20
mov eax, dword [ebp + 0x11fc]
shl eax, 2
push eax
lea eax, [esp + 0x7c]
push eax
lea eax, [esp + 0xf0]
push eax
call fcn.005854c0
add esp, 0x1c
mov edx, dword [ebp + 0x11fc]
xor ebx, ebx
xor ecx, ecx
mov dword [esp + 0x14], 0x100
mov dword [esp + 0x30], 0
mov dword [esp + 0x3c], 0
test edx, edx
jle 0x5544ea
lea eax, [ebp + 0x129c]
mov ebp, eax
movsx eax, byte [ecx + ebp]
inc ecx
shl ebx, 8
add ebx, eax
cmp ecx, edx
jl 0x5544d8
mov ebp, dword [esp + 0x48]
mov esi, dword [esp + 0x4750]
lea eax, [ebp + 0x90]
push 0x111c
push eax
lea eax, [esp + 0x2510]
mov dword [esp + 0x3c], 0xffffffff
mov ecx, 0xc
mov dword [esp + 0x40], 0xffffffff
lea edi, [esp + 0xb0]
rep movsd dword es:[edi], dword [esi]
push eax
call fcn.005854c0
mov al, byte [ebp + 0x12be]
add esp, 0xc
mov byte [esp + 0x1f], al
movzx eax, word [ebp + 0x16a4]
mov dword [esp + 0x50], eax
mov eax, dword [ebp + 0x16a0]
mov dword [esp + 0x54], eax
xor eax, eax
mov edx, dword [esp + 0x14]
movzx edi, dx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x18], edi
cmp ebx, dword [esp + 0x34]
jne 0x554575
mov ecx, dword [esp + 0x24]
mov esi, dword [esp + 0x4750]
mov dword [esp + 0x20], ecx
jmp 0x55468d
cmp ebx, dword [esp + 0x38]
jne 0x55458f
mov ecx, dword [esp + 0x40]
mov esi, dword [esp + 0x4750]
mov dword [esp + 0x20], ecx
jmp 0x55468d
test eax, eax
jle 0x5545e7
mov edi, dword [esp + 0x4750]
lea eax, [esp + 0x2508]
push 0x111c
push eax
lea eax, [ebp + 0x90]
mov ecx, 0xc
lea esi, [esp + 0xb0]
rep movsd dword es:[edi], dword [esi]
push eax
call fcn.005854c0
mov al, byte [esp + 0x2b]
add esp, 0xc
mov edi, dword [esp + 0x18]
mov byte [ebp + 0x12be], al
mov eax, dword [esp + 0x50]
mov word [ebp + 0x16a4], ax
mov eax, dword [esp + 0x54]
mov dword [ebp + 0x16a0], eax
lea eax, [esp + 0x468]
mov ecx, ebp
push eax
lea esi, [ebp + 0x12c0]
push esi
lea eax, [ebp + 0x90]
push eax
lea eax, [ebp + 0x129c]
push eax
lea edx, [esp + 0xe8]
call fcn.00561c20
push dword [esp + 0x4764]
mov edx, dword [esp + 0x4764]
mov ecx, ebp
push 0
push dword [ebp + 0x168c]
call fcn.00555330
movsx eax, byte [ebp + 0x12ba]
add esp, 0x1c
movsx edx, byte [ebp + 0x12b9]
push dword [ebp + 0x1200]
push esi
mov esi, dword [esp + 0x4758]
mov ecx, esi
push eax
call fcn.00555d30
bsr eax, dword [esi + 0x1c]
mov ecx, dword [esi + 0x14]
add esp, 0xc
sub ecx, eax
mov eax, dword [esp + 0x2c]
dec ecx
cmp dword [esp + 0x475c], 0
mov dword [esp + 0x20], ecx
jne 0x554689
test eax, eax
jne 0x554689
cmp ecx, dword [esp + 0x4758]
jg 0x55469f
mov ebx, esi
jmp 0x5549f0
mov edx, dword [esp + 0x14]
cmp eax, 6
je 0x55497e
cmp ecx, dword [esp + 0x4758]
jle 0x554703
cmp dword [esp + 0x30], 0
jne 0x5546e1
cmp eax, 2
jl 0x5546e1
movss xmm0, dword [esp + 0x42c]
mulss xmm0, dword [0x5f4674]
movsx eax, di
mov dword [esp + 0x3c], 0
mov dword [esp + 0x38], 0xffffffff
movss dword [esp + 0x42c], xmm0
mov dword [esp + 0x18], eax
jmp 0x554785
mov eax, dword [esp + 0x14]
cwde
mov dword [esp + 0x3c], 1
mov dword [esp + 0x40], ecx
mov dword [esp + 0x44], eax
mov dword [esp + 0x38], ebx
mov dword [esp + 0x18], eax
jmp 0x554785
mov eax, dword [esp + 0x4758]
add eax, 0xfffffffb
cmp ecx, eax
jge 0x5549e9
movsx eax, dx
mov edx, eax
mov dword [esp + 0x30], 1
mov dword [esp + 0x24], ecx
mov dword [esp + 0x18], eax
mov dword [esp + 0x28], edx
cmp ebx, dword [esp + 0x34]
je 0x55478d
mov eax, dword [esp + 0x4750]
lea edi, [esp + 0x78]
mov ecx, 0xc
mov dword [esp + 0x34], ebx
rep movsd dword es:[edi], dword [esi]
push dword [eax + 0x18]
push dword [eax]
lea eax, [esp + 0x13f0]
push eax
call fcn.005854c0
add esp, 0xc
lea eax, [ebp + 0x90]
push 0x111c
push eax
lea eax, [esp + 0x3630]
push eax
call fcn.005854c0
mov al, byte [ebp + 0x1c18]
add esp, 0xc
mov byte [esp + 0x13], al
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x30]
test dword [esp + 0x3c], eax
jne 0x55484a
mov edi, dword [esp + 0x20]
mov eax, edi
sub eax, dword [esp + 0x4758]
shl eax, 7
cdq
idiv dword [ebp + 0x1200]
add eax, 0x800
mov dword [esp + 0x20], eax
jns 0x5547c1
xor eax, eax
jmp 0x554814
mov ecx, eax
mov edx, eax
sar ecx, 7
and edx, 0x7f
mov ebx, 1
mov eax, edx
shl ebx, cl
mov ecx, 0x80
sub ecx, eax
imul ecx, edx
movzx eax, cx
imul esi, eax, 0xffffff52
sar ecx, 0x10
imul eax, ecx, 0xae
sar esi, 0x10
sub esi, eax
add esi, edx
cmp dword [esp + 0x20], 0x800
jge 0x554809
imul esi, ebx
sar esi, 7
jmp 0x554811
mov eax, ebx
sar eax, 7
imul esi, eax
lea eax, [esi + ebx]
mov ecx, 0x20000
cmp eax, ecx
cmovl ecx, eax
cmp edi, dword [esp + 0x4758]
jle 0x554833
mov eax, 0x14ccd
cmp ecx, eax
cmovg eax, ecx
mov ecx, eax
movzx eax, cx
imul eax, dword [esp + 0x18]
sar ecx, 0x10
imul ecx, dword [esp + 0x14]
sar eax, 0x10
add eax, ecx
jmp 0x554898
mov esi, dword [esp + 0x44]
mov eax, dword [esp + 0x4758]
sub esi, edx
sub eax, ecx
movzx edi, dx
mov ecx, dword [esp + 0x40]
sub ecx, dword [esp + 0x24]
imul eax, esi
sar esi, 2
cdq
idiv ecx
add eax, edi
movzx ebx, ax
mov eax, dword [esp + 0x28]
movsx ecx, bx
add eax, esi
mov dword [esp + 0x14], ebx
cmp ecx, eax
jle 0x554888
lea eax, [esi + edi]
jmp 0x554898
mov edx, dword [esp + 0x44]
mov eax, edx
sub eax, esi
cmp ecx, eax
jge 0x55489f
mov eax, edx
sub eax, esi
movzx ebx, ax
mov dword [esp + 0x14], ebx
mov edi, dword [ebp + 0x11fc]
xor edx, edx
test edi, edi
jle 0x5548f1
movsx esi, bx
mov ebp, 0xff800000
mov ecx, dword [esp + edx*4 + 0x454]
movzx eax, cx
imul eax, esi
sar ecx, 0x10
imul ecx, esi
sar eax, 0x10
add eax, ecx
cmp eax, 0x7fffff
jle 0x5548d9
mov eax, 0x7fffff
jmp 0x5548e1
cmp eax, 0xff800000
cmovl eax, ebp
shl eax, 8
mov dword [esp + edx*4 + 0x58], eax
inc edx
cmp edx, edi
jl 0x5548b3
mov ebp, dword [esp + 0x48]
mov al, byte [esp + 0x464]
lea ecx, [ebp + 0x1c18]
mov byte [ecx], al
lea edx, [esp + 0x58]
xor eax, eax
cmp dword [esp + 0x4754], 2
push edi
sete al
push eax
push ecx
lea ecx, [ebp + 0x129c]
call fcn.0055fe90
mov edx, dword [ebp + 0x11fc]
add esp, 0xc
xor ebx, ebx
xor ecx, ecx
test edx, edx
jle 0x554972
movsx eax, byte [ebp + ecx + 0x129c]
inc ecx
shl ebx, 8
add ebx, eax
cmp ecx, edx
jl 0x554930
movss xmm1, dword [0x5f4528]
xor eax, eax
lea esp, [esp]
cvtsi2ss xmm0, dword [esp + eax*4 + 0x58]
mulss xmm0, xmm1
movss dword [esp + eax*4 + 0xd8], xmm0
inc eax
cmp eax, edx
jl 0x554950
mov eax, dword [esp + 0x2c]
inc eax
jmp 0x55454c
mov eax, dword [esp + 0x2c]
xor ebx, ebx
inc eax
jmp 0x55454c
cmp dword [esp + 0x30], 0
je 0x5549e9
cmp ebx, dword [esp + 0x34]
je 0x554994
cmp ecx, dword [esp + 0x4758]
jle 0x5549e9
mov ebx, dword [esp + 0x4750]
lea eax, [esp + 0x13e8]
push dword [esp + 0x90]
mov ecx, 0xc
lea esi, [esp + 0x7c]
mov edi, ebx
push eax
rep movsd dword es:[edi], dword [esi]
push dword [ebx]
call fcn.005854c0
add esp, 0xc
lea eax, [esp + 0x3628]
push 0x111c
push eax
lea eax, [ebp + 0x90]
push eax
call fcn.005854c0
mov al, byte [esp + 0x1f]
add esp, 0xc
mov byte [ebp + 0x1c18], al
jmp 0x5549f0
mov ebx, dword [esp + 0x4750]
mov eax, dword [ebp + 0x11f8]
lea eax, [eax + eax*4]
add eax, dword [ebp + 0x1208]
shl eax, 2
push eax
mov eax, dword [ebp + 0x1200]
lea eax, [eax*4 + 0x2484]
add eax, ebp
push eax
lea eax, [ebp + 0x2484]
push eax
call fcn.005854c0
mov eax, dword [ebp + 0x11fc]
add esp, 0xc
cmp dword [ebp + 0x1264], 0
mov eax, dword [esp + eax*4 + 0x1b8]
mov dword [ebp + 0x11d8], eax
mov al, byte [ebp + 0x12b9]
mov byte [ebp + 0x11d5], al
je 0x554a61
mov eax, dword [esp + 0x4c]
mov dword [eax], 0
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x473c
ret
mov dword [ebp + 0x1254], 0
bsr eax, dword [ebx + 0x1c]
mov ecx, dword [ebx + 0x14]
sub ecx, eax
mov eax, dword [esp + 0x4c]
pop edi
add ecx, 6
pop esi
sar ecx, 3
pop ebp
mov dword [eax], ecx
xor eax, eax
pop ebx
add esp, 0x473c
ret