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

Disassembly:
sub esp, 0x59c
mov eax, dword [0x61f138]
xor eax, esp
mov dword [esp + 0x598], eax
mov eax, dword [esp + 0x5a0]
push ebx
mov ebx, ecx
mov dword [esp + 0x34], eax
push ebp
push esi
push edi
mov eax, dword [ebx + 0x90c]
lea edi, [ebx + 0xad4]
mov dword [esp + 0x10], edx
mov dword [esp + 0x20], ebx
cmp eax, dword [edi + 0x568]
je 0x552c02
call fcn.00552b40
mov eax, dword [ebx + 0x90c]
mov dword [edi + 0x568], eax
cmp dword [ebx + 0x1040], 0
jne 0x552d65
cmp dword [ebx + 0x1044], 0
jne 0x552d58
cmp dword [ebx + 0x924], 0
jle 0x552c86
lea ecx, [ebx + 0x928]
lea ebp, [edi + 0x500]
mov dword [esp + 0x14], ecx
xor edi, edi
jmp 0x552c40
movsx edx, word [ecx]
lea ebp, [ebp + 2]
movzx esi, word [ebp - 2]
inc edi
movsx eax, si
sub edx, eax
movzx eax, dx
imul ecx, eax, 0x3fdc
sar edx, 0x10
imul eax, edx, 0x3fdc
sar ecx, 0x10
add ecx, esi
add eax, ecx
mov ecx, dword [esp + 0x14]
mov word [ebp - 2], ax
add ecx, 2
mov dword [esp + 0x14], ecx
cmp edi, dword [ebx + 0x924]
jl 0x552c40
lea edi, [ebx + 0xad4]
mov eax, dword [ebx + 0x914]
xor esi, esi
xor ebp, ebp
xor edx, edx
test eax, eax
jle 0x552cc5
mov edi, eax
jmp 0x552ca0
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + edx*4 + 0x10]
cmp ecx, esi
mov eax, edx
cmovle eax, ebp
inc edx
cmp ecx, esi
mov ebp, eax
cmovle ecx, esi
mov esi, ecx
cmp edx, edi
jl 0x552ca0
mov eax, edi
lea edi, [ebx + 0xad4]
mov ecx, dword [ebx + 0x91c]
lea eax, [eax*4 - 4]
imul eax, ecx
push eax
lea eax, [edi + ecx*4]
push edi
push eax
call fcn.00586a50
mov ecx, dword [ebx + 0x91c]
lea eax, [ecx*4]
imul ecx, ebp
push eax
inc ecx
lea eax, [ebx + ecx*4]
push eax
push edi
call fcn.00586300
add esp, 0x18
mov dword [esp + 0x14], 0
cmp dword [ebx + 0x914], 0
jle 0x552d58
mov ebp, dword [esp + 0x10]
mov esi, dword [edi + 0x560]
add ebp, 0x10
lea ecx, [ecx]
mov edx, dword [ebp]
lea ebp, [ebp + 4]
sub edx, esi
movzx eax, dx
imul ecx, eax, 0x121a
sar edx, 0x10
imul eax, edx, 0x121a
sar ecx, 0x10
add esi, eax
mov eax, dword [esp + 0x14]
add esi, ecx
inc eax
mov dword [edi + 0x560], esi
mov dword [esp + 0x14], eax
cmp eax, dword [ebx + 0x914]
jl 0x552d20
cmp dword [ebx + 0x1040], 0
je 0x5531ce
mov eax, dword [esp + 0x5b4]
mov ebp, 0xff
mov ecx, dword [edi + 0x560]
cmp eax, ebp
jge 0x552d86
jmp 0x552d80
sar ebp, 1
cmp ebp, eax
jg 0x552d80
mov esi, dword [edi + 0x564]
test eax, eax
jle 0x552e17
mov eax, ecx
sar ecx, 0x13
sar eax, 4
inc ecx
sar ecx, 1
xor ebx, ebx
cwde
mov dword [esp + 0x14], eax
mov dword [esp + 0x1c], ecx
lea ebx, [ebx]
imul esi, esi, 0xbb38435
add esi, 0x3619636b
mov eax, esi
sar eax, 0x18
and eax, ebp
mov ecx, dword [edi + eax*4]
mov eax, ecx
sar eax, 0x10
imul eax, dword [esp + 0x14]
movzx edx, cx
imul edx, dword [esp + 0x14]
sar edx, 0x10
add edx, eax
mov eax, dword [esp + 0x1c]
imul eax, ecx
add eax, edx
cmp eax, 0x7fff
jle 0x552df4
mov eax, 0x7fff
jmp 0x552e01
cmp eax, 0xffff8000
mov ecx, 0xffff8000
cmovl eax, ecx
cwde
mov dword [esp + ebx*4 + 0x88], eax
inc ebx
cmp ebx, dword [esp + 0x5b4]
jl 0x552db0
mov ebx, dword [esp + 0x20]
mov dword [edi + 0x564], esi
lea edx, [edi + 0x500]
push dword [ebx + 0x924]
lea ecx, [esp + 0x58c]
call fcn.00558350
lea eax, [edi + 0x520]
xor edx, edx
mov esi, eax
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x5b8]
lea edi, [esp + 0x4c]
add esp, 4
mov dword [esp + 0x1c], edx
mov ecx, 0x10
rep movsd dword es:[edi], dword [esi]
test eax, eax
jle 0x5531ba
movsx eax, word [esp + 0x594]
movsx ecx, word [esp + 0x592]
mov dword [esp + 0x38], eax
movsx eax, word [esp + 0x598]
mov dword [esp + 0x34], eax
movsx eax, word [esp + 0x59a]
mov dword [esp + 0x30], eax
movsx eax, word [esp + 0x588]
mov dword [esp + 0x2c], eax
lea esp, [esp]
lea eax, [edx*4]
mov esi, dword [esp + eax + 0x74]
mov ebp, dword [esp + eax + 0x80]
mov ebx, dword [esp + eax + 0x7c]
mov edi, dword [esp + eax + 0x78]
mov edx, dword [esp + eax + 0x70]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], esi
movzx eax, dx
imul eax, ecx
movzx ecx, si
movsx esi, word [esp + 0x590]
imul ecx, esi
movsx esi, word [esp + 0x58e]
sar eax, 0x10
sar edx, 0x10
sar ecx, 0x10
add eax, ecx
movzx ecx, di
imul ecx, esi
movsx esi, word [esp + 0x58c]
sar edi, 0x10
sar ecx, 0x10
add eax, ecx
movzx ecx, bx
imul ecx, esi
movsx esi, word [esp + 0x58a]
sar ebx, 0x10
sar ecx, 0x10
add eax, ecx
movzx ecx, bp
imul ecx, esi
mov esi, dword [esp + 0x14]
sar ebp, 0x10
sar ecx, 0x10
add eax, ecx
mov ecx, dword [esp + esi + 0x84]
movzx ecx, cx
imul ecx, dword [esp + 0x2c]
sar ecx, 0x10
add eax, ecx
mov ecx, dword [esp + esi + 0x60]
movzx ecx, cx
imul ecx, dword [esp + 0x30]
sar ecx, 0x10
add eax, ecx
mov ecx, dword [esp + esi + 0x64]
movzx ecx, cx
imul ecx, dword [esp + 0x34]
sar ecx, 0x10
add eax, ecx
mov ecx, dword [esp + esi + 0x6c]
movzx ecx, cx
imul ecx, dword [esp + 0x38]
sar ecx, 0x10
add eax, ecx
mov ecx, dword [esp + esi + 0x68]
movsx esi, word [esp + 0x596]
movzx ecx, cx
imul ecx, esi
mov esi, dword [esp + 0x18]
sar esi, 0x10
sar ecx, 0x10
add eax, ecx
movsx ecx, word [esp + 0x592]
imul edx, ecx
movsx ecx, word [esp + 0x590]
imul esi, ecx
movsx ecx, word [esp + 0x58e]
imul edi, ecx
movsx ecx, word [esp + 0x58c]
add eax, edx
imul ebx, ecx
movsx ecx, word [esp + 0x58a]
add eax, esi
mov esi, dword [esp + 0x14]
imul ebp, ecx
add eax, edi
add eax, ebx
mov ecx, dword [esp + esi + 0x84]
add eax, ebp
movsx edx, word [esp + 0x588]
sar ecx, 0x10
imul ecx, edx
movsx edx, word [esp + 0x59a]
add eax, ecx
mov ecx, dword [esp + esi + 0x60]
sar ecx, 0x10
imul ecx, edx
movsx edx, word [esp + 0x598]
add eax, ecx
mov ecx, dword [esp + esi + 0x64]
sar ecx, 0x10
imul ecx, edx
movsx edx, word [esp + 0x594]
add eax, ecx
mov ecx, dword [esp + esi + 0x6c]
sar ecx, 0x10
imul ecx, edx
movsx edx, word [esp + 0x596]
add eax, ecx
mov ecx, dword [esp + esi + 0x68]
sar ecx, 0x10
imul ecx, edx
add eax, ecx
mov ecx, dword [esp + 0x20]
mov edx, dword [ecx + 0x924]
mov ecx, edx
sar ecx, 1
add eax, ecx
cmp edx, 0x10
jne 0x55315f
mov ecx, dword [esp + 0x59e]
movsx ecx, cx
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x5a2]
movsx ecx, cx
mov dword [esp + 0x28], ecx
movsx ecx, word [esp + 0x5a6]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x59c]
movsx ebp, cx
mov ebx, dword [esp + esi + 0x54]
mov ecx, dword [esp + 0x5a0]
movsx edi, cx
mov esi, dword [esp + esi + 0x4c]
mov ecx, dword [esp + 0x5a4]
movsx edx, cx
movzx ecx, si
imul ecx, edx
mov dword [esp + 0x3c], edi
sar esi, 0x10
imul esi, edx
sar ecx, 0x10
mov dword [esp + 0x10], ecx
movzx ecx, bx
imul ecx, edi
mov edi, dword [esp + 0x14]
sar ebx, 0x10
imul ebx, dword [esp + 0x3c]
sar ecx, 0x10
add dword [esp + 0x10], ecx
mov ecx, dword [esp + edi + 0x5c]
movzx ecx, cx
imul ecx, ebp
sar ecx, 0x10
add dword [esp + 0x10], ecx
mov ecx, dword [esp + edi + 0x48]
movzx ecx, cx
imul ecx, dword [esp + 0x24]
sar ecx, 0x10
add dword [esp + 0x10], ecx
mov ecx, dword [esp + edi + 0x50]
movzx ecx, cx
imul ecx, dword [esp + 0x28]
sar ecx, 0x10
add dword [esp + 0x10], ecx
mov ecx, dword [esp + edi + 0x58]
movzx ecx, cx
imul ecx, dword [esp + 0x18]
sar ecx, 0x10
add dword [esp + 0x10], ecx
mov edx, dword [esp + 0x10]
add edx, esi
mov esi, edi
add edx, ebx
mov ecx, dword [esp + esi + 0x5c]
sar ecx, 0x10
imul ecx, ebp
add edx, ecx
mov ecx, dword [esp + esi + 0x48]
sar ecx, 0x10
imul ecx, dword [esp + 0x24]
add edx, ecx
mov ecx, dword [esp + esi + 0x50]
sar ecx, 0x10
imul ecx, dword [esp + 0x28]
add edx, ecx
mov ecx, dword [esp + esi + 0x58]
sar ecx, 0x10
imul ecx, dword [esp + 0x18]
add eax, ecx
add eax, edx
mov edx, dword [esp + 0x1c]
mov ecx, eax
mov ebx, dword [esp + 0x40]
sar eax, 5
shl ecx, 4
inc eax
add dword [esp + esi + 0x88], ecx
movsx ecx, word [ebx + edx*2]
sar eax, 1
add eax, ecx
cmp eax, 0x7fff
jle 0x55318d
mov eax, 0x7fff
jmp 0x55319a
cmp eax, 0xffff8000
mov ecx, 0xffff8000
cmovl eax, ecx
movsx ecx, word [esp + 0x592]
mov word [ebx + edx*2], ax
inc edx
mov eax, dword [esp + 0x5b4]
mov dword [esp + 0x1c], edx
cmp edx, eax
jl 0x552ea0
mov edi, dword [esp + 0x44]
lea esi, [esp + 0x48]
lea esi, [esi + eax*4]
mov ecx, 0x10
rep movsd dword es:[edi], dword [esi]
jmp 0x5531e9
mov eax, dword [ebx + 0x924]
shl eax, 2
push eax
lea eax, [edi + 0x520]
push 0
push eax
call fcn.00586880
add esp, 0xc
mov ecx, dword [esp + 0x5a8]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0056eeb4
add esp, 0x59c
ret