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

Disassembly:
sub esp, 0x60
push ebx
mov ebx, dword [esp + 0x94]
push ebp
mov ebp, ecx
sar ebx, 6
mov ecx, dword [esp + 0x78]
add ecx, 8
mov dword [esp + 0x50], edx
push esi
mov eax, dword [ebp + 0x110c]
lea esi, [ebp + 0xf7c]
sub eax, dword [esp + 0x8c]
push edi
mov dword [esp + 0x44], ebp
mov dword [esp + 0x14], esi
lea eax, [eax*4 + 0x504]
mov dword [esp + 0x24], 0
add eax, ebp
mov dword [esp + 0x4c], eax
mov eax, dword [ebp + 0x1108]
sub eax, dword [esp + 0x90]
lea eax, [ecx + eax*4]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0xac]
test eax, eax
jle 0x555d48
mov eax, dword [esp + 0xb4]
sar eax, 1
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0xb0]
mov ecx, eax
sar ecx, 1
mov dword [esp + 0x5c], ecx
mov edx, dword [ebp + 0x1110]
lea ecx, [eax*4 + 0x10bc]
add ecx, ebp
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x8c]
sub ecx, 2
lea eax, [ecx + eax*2]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x9c]
mov ecx, eax
cwde
mov dword [esp + 0x48], eax
movsx eax, bx
sar ebx, 0xf
sar ecx, 0x10
inc ebx
sar ebx, 1
mov dword [esp + 0x68], ecx
mov dword [esp + 0x6c], eax
mov dword [esp + 0xa0], ebx
lea ebx, [ebx]
mov ecx, dword [esp + 0x84]
imul eax, edx, 0xbb38435
add eax, 0x3619636b
mov dword [ebp + 0x1110], eax
movsx eax, word [ecx + 0x12]
mov dword [esp + 0x34], eax
movsx eax, word [ecx + 0x10]
mov dword [esp + 0x30], eax
movsx eax, word [ecx + 0xe]
mov dword [esp + 0x28], eax
movsx eax, word [ecx + 0xc]
mov dword [esp + 0x2c], eax
movsx eax, word [ecx + 0xa]
mov dword [esp + 0x1c], eax
movsx eax, word [ecx + 8]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x14]
movsx ebx, word [ecx + 6]
mov ebp, dword [esi - 0xc]
mov edi, dword [esi - 8]
mov edx, dword [eax - 4]
mov eax, dword [eax]
mov dword [esp + 0x38], eax
movzx eax, ax
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x38]
sar eax, 0x10
mov dword [esp + 0x40], eax
movsx esi, word [ecx + 4]
movsx ecx, word [ecx + 2]
movzx eax, dx
imul eax, ecx
mov dword [esp + 0x50], ebx
sar edx, 0x10
sar eax, 0x10
mov dword [esp + 0x10], eax
movzx eax, di
imul eax, esi
sar eax, 0x10
add dword [esp + 0x10], eax
movzx eax, bp
imul eax, ebx
mov ebx, dword [esp + 0x14]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [ebx - 0x10]
movzx eax, ax
imul eax, dword [esp + 0x20]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [ebx - 0x14]
movzx eax, ax
imul eax, dword [esp + 0x1c]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [ebx - 0x1c]
movzx eax, ax
imul eax, dword [esp + 0x28]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [ebx - 0x18]
movzx eax, ax
imul eax, dword [esp + 0x2c]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [ebx - 0x20]
movzx eax, ax
imul eax, dword [esp + 0x30]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [ebx - 0x24]
mov ebx, dword [esp + 0x84]
movzx eax, ax
imul eax, dword [esp + 0x34]
sar eax, 0x10
add dword [esp + 0x10], eax
movsx eax, word [ebx]
imul eax, dword [esp + 0x3c]
sar eax, 0x10
add dword [esp + 0x10], eax
imul edx, ecx
mov ecx, dword [esp + 0x10]
sar edi, 0x10
add ecx, edx
imul edi, esi
mov esi, dword [esp + 0x14]
sar ebp, 0x10
imul ebp, dword [esp + 0x50]
mov ebx, dword [esp + 0x40]
mov eax, dword [esi - 0x10]
add ecx, edi
sar eax, 0x10
imul eax, dword [esp + 0x20]
add ecx, ebp
mov edx, dword [esi - 0x24]
mov edi, dword [esp + 0x84]
sar edx, 0x10
imul edx, dword [esp + 0x34]
add ecx, eax
mov eax, dword [esi - 0x14]
sar eax, 0x10
imul eax, dword [esp + 0x1c]
add edx, dword [esp + 0x54]
add ecx, eax
mov eax, dword [esi - 0x1c]
sar eax, 0x10
imul eax, dword [esp + 0x28]
add ecx, eax
mov eax, dword [esi - 0x18]
sar eax, 0x10
imul eax, dword [esp + 0x2c]
add ecx, eax
mov eax, dword [esi - 0x20]
sar eax, 0x10
imul eax, dword [esp + 0x30]
add ecx, eax
movsx eax, word [edi]
imul ebx, eax
add edx, ecx
add ebx, edx
cmp dword [esp + 0xb4], 0x10
mov dword [esp + 0x1c], ebx
jne 0x5558ba
mov ebp, dword [esi - 0x30]
mov ecx, edi
mov edi, dword [esi - 0x2c]
movsx eax, word [ecx + 0x1e]
mov dword [esp + 0x2c], eax
movsx eax, word [ecx + 0x1c]
mov dword [esp + 0x30], eax
movsx eax, word [ecx + 0x1a]
movsx ebx, word [ecx + 0x18]
movsx esi, word [ecx + 0x16]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x14]
movsx ecx, word [ecx + 0x14]
mov dword [esp + 0x50], ebx
mov edx, dword [eax - 0x28]
movzx eax, dx
imul eax, ecx
sar edx, 0x10
imul edx, ecx
sar eax, 0x10
mov dword [esp + 0x10], eax
movzx eax, di
imul eax, esi
sar edi, 0x10
imul edi, esi
sar eax, 0x10
add dword [esp + 0x10], eax
movzx eax, bp
imul eax, ebx
mov ebx, dword [esp + 0x14]
sar ebp, 0x10
imul ebp, dword [esp + 0x50]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [ebx - 0x34]
movzx eax, ax
imul eax, dword [esp + 0x34]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [ebx - 0x38]
movzx eax, ax
imul eax, dword [esp + 0x30]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [ebx - 0x3c]
movzx eax, ax
imul eax, dword [esp + 0x2c]
sar eax, 0x10
add dword [esp + 0x10], eax
mov ecx, dword [esp + 0x10]
add ecx, edx
mov edx, ebx
add ecx, edi
add ecx, ebp
mov eax, dword [edx - 0x34]
sar eax, 0x10
imul eax, dword [esp + 0x34]
add ecx, eax
mov eax, dword [edx - 0x38]
sar eax, 0x10
imul eax, dword [esp + 0x30]
add ecx, eax
mov eax, dword [edx - 0x3c]
sar eax, 0x10
imul eax, dword [esp + 0x2c]
add eax, dword [esp + 0x1c]
add eax, ecx
mov dword [esp + 0x1c], eax
cmp dword [esp + 0x58], 2
jne 0x555997
mov edx, dword [esp + 0x88]
mov ecx, dword [esp + 0x18]
movsx eax, word [edx + 8]
movsx ebx, word [edx + 4]
movsx esi, word [edx + 2]
mov ebp, dword [ecx - 8]
mov edi, dword [ecx - 4]
mov dword [esp + 0x30], eax
movsx eax, word [edx + 6]
mov edx, dword [ecx]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x88]
mov dword [esp + 0x50], ebx
movsx ecx, word [eax]
movzx eax, dx
imul eax, ecx
sar edx, 0x10
imul edx, ecx
sar eax, 0x10
mov dword [esp + 0x10], eax
movzx eax, di
imul eax, esi
sar edi, 0x10
imul edi, esi
sar eax, 0x10
add dword [esp + 0x10], eax
movzx eax, bp
imul eax, ebx
mov ebx, dword [esp + 0x18]
sar ebp, 0x10
imul ebp, dword [esp + 0x50]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [ebx - 0xc]
movzx eax, ax
imul eax, dword [esp + 0x34]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [ebx - 0x10]
movzx eax, ax
imul eax, dword [esp + 0x30]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add eax, edx
mov edx, ebx
add eax, edi
add eax, ebp
mov ecx, dword [edx - 0xc]
mov ebx, dword [edx - 0x10]
sar ebx, 0x10
imul ebx, dword [esp + 0x30]
sar ecx, 0x10
imul ecx, dword [esp + 0x34]
add ebx, 2
add eax, ecx
add ebx, eax
add edx, 4
mov dword [esp + 0x20], ebx
mov dword [esp + 0x18], edx
jmp 0x55599f
mov dword [esp + 0x20], 0
mov ebp, dword [esp + 0x44]
mov edx, dword [esp + 0x8c]
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x50], 2
mov eax, dword [ebp + 0x10c0]
mov dword [ebp + 0x10c0], ecx
movsx esi, word [edx]
mov ecx, esi
imul esi, dword [esp + 0x40]
imul ecx, dword [esp + 0x3c]
sar ecx, 0x10
add ecx, dword [esp + 0x5c]
add esi, ecx
cmp dword [esp + 0xb0], 2
mov dword [esp + 0x40], esi
jle 0x555a52
lea ebx, [ebp + 0x10c8]
mov ebp, dword [esp + 0x50]
mov edi, dword [ebx - 4]
lea ebx, [ebx + 8]
mov dword [ebx - 0xc], eax
movsx ecx, word [edx + ebp*2 - 2]
movzx edx, ax
imul edx, ecx
sar eax, 0x10
imul eax, ecx
mov ecx, dword [esp + 0x8c]
sar edx, 0x10
add esi, eax
mov eax, dword [ebx - 8]
add esi, edx
mov dword [ebx - 8], edi
movsx ecx, word [ecx + ebp*2]
add ebp, 2
movzx edx, di
sar edi, 0x10
imul edx, ecx
imul edi, ecx
sar edx, 0x10
add esi, edi
add esi, edx
mov edx, dword [esp + 0x8c]
cmp ebp, dword [esp + 0xb0]
jl 0x5559f2
mov ebp, dword [esp + 0x44]
mov dword [esp + 0x40], esi
mov ecx, dword [esp + 0x60]
movzx edx, ax
mov ebx, dword [esp + 0x1c]
shl ebx, 2
mov dword [ecx], eax
mov ecx, dword [esp + 0x64]
mov edi, dword [ebp + 0x1100]
sar eax, 0xf
and eax, 0xfffffffe
movzx esi, di
movsx ecx, word [ecx]
imul eax, ecx
imul edx, ecx
movsx ecx, word [esp + 0x98]
sar edi, 0x10
sar edx, 0xf
and edx, 0xfffffffe
add edx, eax
mov eax, esi
imul eax, ecx
imul esi, dword [esp + 0x68]
sar eax, 0x10
add edx, eax
sar esi, 0x10
mov eax, edi
imul edi, dword [esp + 0x68]
imul eax, ecx
add edx, eax
mov eax, dword [esp + 0x40]
lea edx, [edx + eax*2]
mov eax, dword [ebp + 0x110c]
mov dword [esp + 0x50], edx
mov eax, dword [ebp + eax*4 + 0x4fc]
movzx ecx, ax
imul ecx, dword [esp + 0x48]
sar eax, 0x10
imul eax, dword [esp + 0x48]
sar ecx, 0x10
add ecx, esi
add ecx, eax
add ecx, edi
sub ebx, ecx
mov dword [esp + 0x40], ecx
sub ebx, edx
cmp dword [esp + 0x90], 0
jle 0x555b60
mov eax, dword [esp + 0x4c]
add ebx, ebx
mov ecx, dword [esp + 0x94]
movsx esi, cx
mov edi, dword [eax - 8]
add edi, dword [eax]
mov edx, dword [eax - 4]
add eax, 4
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x94]
sar eax, 0x10
movzx ecx, dx
imul ecx, eax
mov eax, dword [esp + 0x94]
sar eax, 0xf
and eax, 0xfffffffe
sar edx, 0x10
imul eax, edx
sar ecx, 0xf
and ecx, 0xfffffffe
sub ebx, ecx
sub ebx, eax
movzx eax, di
imul eax, esi
sar edi, 0xf
and edi, 0xfffffffe
imul edi, esi
sar eax, 0xf
and eax, 0xfffffffe
sub ebx, eax
sub ebx, edi
add ebx, dword [esp + 0x20]
sar ebx, 2
jmp 0x555b62
sar ebx, 1
mov ecx, dword [esp + 0x74]
inc ebx
mov eax, dword [esp + 0x24]
sar ebx, 1
mov eax, dword [ecx + eax*4]
mov ecx, eax
sub ecx, ebx
sub ebx, eax
cmp dword [ebp + 0x1110], 0
cmovge ebx, ecx
cmp ebx, 0x7800
jle 0x555b8f
mov ebx, 0x7800
jmp 0x555b9d
cmp ebx, 0xffff8400
mov eax, 0xffff8400
cmovl ebx, eax
mov ecx, dword [esp + 0xa8]
mov eax, ebx
sub eax, ecx
sar eax, 0xa
test eax, eax
jle 0x555bc9
shl eax, 0xa
lea edi, [ecx - 0x50]
add edi, eax
movzx eax, di
mov dword [esp + 0x10], eax
lea esi, [edi + 0x400]
movzx ecx, si
jmp 0x555c1c
jne 0x555bdf
movzx eax, cx
lea esi, [ecx + 0x3b0]
mov edi, ecx
mov dword [esp + 0x10], eax
movzx ecx, si
jmp 0x555c1c
cmp eax, 0xffffffff
jne 0x555bfc
lea edi, [ecx - 0x3b0]
mov esi, ecx
mov eax, edi
movzx ecx, cx
neg eax
movzx eax, ax
mov dword [esp + 0x10], eax
jmp 0x555c1c
shl eax, 0xa
lea edi, [ecx + 0x50]
add edi, eax
mov eax, edi
neg eax
movzx eax, ax
lea esi, [edi + 0x400]
mov dword [esp + 0x10], eax
mov eax, esi
neg eax
movzx ecx, ax
movsx ecx, cx
mov eax, ebx
sub eax, edi
sub ebx, esi
movsx edx, ax
movsx eax, bx
movsx ebx, word [esp + 0xa4]
imul eax, eax
imul ecx, ebx
imul edx, edx
add ecx, eax
mov eax, dword [esp + 0x10]
cwde
imul eax, ebx
mov ebx, dword [esp + 0x24]
add eax, edx
mov edx, dword [esp + 0x1c]
cmp ecx, eax
mov ecx, dword [esp + 0x78]
cmovge esi, edi
mov eax, esi
shl esi, 4
sar eax, 9
inc eax
sar eax, 1
mov byte [ebx + ecx], al
mov eax, esi
mov ecx, dword [esp + 0x20]
neg eax
cmp dword [ebp + 0x1110], 0
cmovge eax, esi
shl edx, 4
lea edi, [eax + ecx*2]
add edx, edi
movzx ecx, dx
mov eax, edx
imul ecx, dword [esp + 0x6c]
sar eax, 0x10
imul eax, dword [esp + 0x6c]
sar ecx, 0x10
add ecx, eax
mov eax, dword [esp + 0xa0]
imul eax, edx
add ecx, eax
sar ecx, 7
inc ecx
sar ecx, 1
cmp ecx, 0x7fff
jle 0x555cb9
mov ecx, 0x7fff
jmp 0x555cc7
cmp ecx, 0xffff8000
mov eax, 0xffff8000
cmovl ecx, eax
mov eax, dword [esp + 0x7c]
mov esi, dword [esp + 0x14]
add esi, 4
mov dword [esp + 0x14], esi
mov word [eax + ebx*2], cx
lea ecx, [edi + edi]
mov eax, dword [esp + 0x50]
mov dword [esi], edx
shl eax, 2
sub edx, eax
mov eax, dword [esp + 0x40]
shl eax, 2
mov dword [ebp + 0x1100], edx
sub edx, eax
mov eax, dword [ebp + 0x110c]
mov dword [ebp + eax*4 + 0x500], edx
mov eax, dword [ebp + 0x1108]
mov edx, dword [esp + 0x80]
mov dword [edx + eax*4], ecx
mov eax, dword [esp + 0x78]
inc dword [ebp + 0x110c]
inc dword [ebp + 0x1108]
movsx eax, byte [ebx + eax]
inc ebx
add dword [ebp + 0x1110], eax
mov eax, dword [esp + 0xac]
mov edx, dword [ebp + 0x1110]
mov dword [esp + 0x24], ebx
cmp ebx, eax
jl 0x555610
lea esi, [eax*4 + 0xf00]
mov ecx, 0x20
add esi, ebp
lea edi, [ebp + 0xf00]
rep movsd dword es:[edi], dword [esi]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x60
ret