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

Disassembly:
sub esp, 0x184
mov eax, dword [0x61f138]
xor eax, esp
mov dword [esp + 0x180], eax
mov eax, dword [esp + 0x198]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x190]
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0x19c]
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x1d0]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x1e0]
mov dword [esp + 0x38], eax
mov eax, dword [ecx + 0x110c]
sub eax, dword [esp + 0x1ac]
add eax, 0x141
mov dword [esp + 0x78], ecx
push ebx
mov ebx, dword [esp + 0x1e8]
push ebp
push esi
lea esi, [ecx + eax*4]
mov dword [esp + 0x40], ebx
mov eax, dword [ecx + 0x1108]
mov ebp, edx
sub eax, dword [esp + 0x1b8]
mov ecx, dword [esp + 0x80]
mov edx, dword [esp + 0x1e8]
push edi
mov edi, dword [esp + 0x1a4]
lea ecx, [ecx + eax*4]
mov dword [esp + 0x40], ebp
mov eax, dword [esp + 0x1cc]
add ecx, 8
sar eax, 6
mov dword [esp + 0xcc], eax
xor eax, eax
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x1d8]
mov dword [esp + 0x54], esi
mov dword [esp + 0x50], ecx
test eax, eax
jle 0x55783e
lea eax, [ebx + ebx]
mov dword [esp + 0x30], 0xfffffbfc
mov ebx, dword [esp + 0x1b8]
sub edi, eax
lea eax, [ebp + 0x460]
mov dword [esp + 0x60], edi
mov dword [esp + 0xa4], eax
mov eax, dword [esp + 0x19c]
add eax, 0x404
mov dword [esp + 0x64], 0x400
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x1e8]
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x1d4]
mov dword [esp + 0xc4], eax
mov eax, dword [esp + 0x1d0]
mov dword [esp + 0xa0], eax
mov eax, dword [esp + 0x1c8]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x1c4]
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0x1c0]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x198]
jmp 0x556c30
mov edx, dword [esp + 0x1b4]
cmp eax, 2
jne 0x556d2c
movsx eax, word [edx + 6]
movsx esi, word [edx + 8]
movsx ebx, word [edx + 2]
mov edi, dword [ecx - 0x10]
mov ebp, dword [ecx - 4]
mov dword [esp + 0x1c], eax
movsx eax, word [edx + 4]
mov edx, dword [ecx]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x1b4]
mov dword [esp + 0x34], ebx
movsx ecx, word [eax]
movzx eax, di
imul eax, esi
sar edi, 0xf
and edi, 0xfffffffe
imul edi, esi
mov esi, dword [esp + 0x54]
sar eax, 0xf
and eax, 0xfffffffe
mov dword [esp + 0x10], eax
movzx eax, dx
imul eax, ecx
sar edx, 0xf
and edx, 0xfffffffe
imul edx, ecx
sar eax, 0xf
and eax, 0xfffffffe
add dword [esp + 0x10], eax
movzx eax, bp
imul eax, ebx
mov ebx, dword [esp + 0x50]
sar ebp, 0xf
and ebp, 0xfffffffe
imul ebp, dword [esp + 0x34]
sar eax, 0xf
and eax, 0xfffffffe
add dword [esp + 0x10], eax
mov eax, dword [ebx - 8]
movzx eax, ax
imul eax, dword [esp + 0x38]
sar eax, 0xf
and eax, 0xfffffffe
add dword [esp + 0x10], eax
mov eax, dword [ebx - 0xc]
movzx eax, ax
imul eax, dword [esp + 0x1c]
sar eax, 0xf
and eax, 0xfffffffe
add dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add eax, edi
add eax, edx
mov edx, ebx
mov ebx, dword [esp + 0x1b8]
add eax, ebp
mov ecx, dword [edx - 8]
mov ebp, dword [edx - 0xc]
sar ebp, 0xf
sar ecx, 0xf
and ebp, 0xfffffffe
imul ebp, dword [esp + 0x1c]
and ecx, 0xfffffffe
imul ecx, dword [esp + 0x38]
add ebp, 4
add eax, ecx
add ebp, eax
add edx, 4
mov dword [esp + 0x50], edx
jmp 0x556d2e
xor ebp, ebp
cmp dword [esp + 0x1bc], 0
mov dword [esp + 0x38], ebp
jle 0x556d95
mov edi, dword [esi - 8]
add edi, dword [esi]
mov edx, dword [esi - 4]
mov eax, dword [esp + 0x70]
movsx esi, ax
sar eax, 0x10
movzx ecx, dx
imul ecx, eax
mov eax, dword [esp + 0x70]
sar eax, 0xe
and eax, 0xfffffffc
sar edx, 0x10
imul eax, edx
sar ecx, 0xe
and ecx, 0xfffffffc
sub ebp, ecx
sub ebp, eax
movzx eax, di
imul eax, esi
sar edi, 0xe
and edi, 0xfffffffc
imul edi, esi
sar eax, 0xe
and eax, 0xfffffffc
sub ebp, eax
sub ebp, edi
add dword [esp + 0x54], 4
mov dword [esp + 0x94], ebp
jmp 0x556da0
mov dword [esp + 0x94], 0
mov edi, dword [esp + 0x1ec]
test edi, edi
jle 0x5574cc
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x98]
mov dword [esp + 0x34], edi
mov eax, dword [eax + ecx]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x1e4]
sar eax, 1
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 0x9c]
cwde
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x58]
mov edx, eax
sar edx, 1
mov dword [esp + 0xac], edx
lea edx, [eax - 1]
lea edx, [ebx + edx*2]
mov ebx, dword [esp + 0xa0]
mov dword [esp + 0xb4], edx
lea eax, [eax*4 - 0x44]
mov edx, dword [esp + 0x5c]
sar edx, 0x10
mov dword [esp + 0xbc], edx
mov edx, dword [esp + 0x5c]
sar edx, 0xe
and edx, 0xfffffffc
mov dword [esp + 0xb0], eax
mov dword [esp + 0xc0], edx
movsx edx, bx
mov dword [esp + 0x7c], edx
lea edx, [esp + 0xec]
mov dword [esp + 0x3c], edx
mov edx, dword [esp + 0x40]
add edx, 0x480
add ecx, dword [esp + 0xa4]
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], ecx
lea esp, [esp]
imul eax, dword [edx + 4], 0xbb38435
add eax, 0x3619636b
mov dword [edx + 4], eax
mov edx, dword [esp + 0x1b0]
mov eax, dword [ecx - 4]
mov dword [esp + 0x20], eax
mov ebx, dword [ecx + 0x18]
movsx eax, word [edx + 0x12]
mov dword [esp + 0x14], eax
movsx eax, word [edx + 0x10]
mov dword [esp + 0x24], eax
movsx eax, word [edx + 0xe]
mov dword [esp + 0x90], eax
movsx eax, word [edx + 0xc]
mov dword [esp + 0x80], eax
movsx eax, word [edx + 0xa]
mov dword [esp + 0x78], eax
movsx eax, word [edx + 8]
mov dword [esp + 0x74], eax
mov esi, dword [ecx + 0x1c]
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x28]
movsx edi, word [edx + 4]
movsx ebp, word [edx + 6]
movsx edx, word [edx + 2]
mov eax, dword [eax + ecx]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1b0]
mov dword [esp + 0x68], edi
movsx ecx, word [eax]
mov eax, dword [esp + 0x1c]
movzx eax, ax
imul eax, ecx
sar eax, 0x10
mov dword [esp + 0x10], eax
movzx eax, si
imul eax, edx
sar eax, 0x10
add dword [esp + 0x10], eax
movzx eax, bx
imul eax, edi
mov edi, dword [esp + 0x2c]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [edi + 0x14]
movzx eax, ax
imul eax, ebp
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [edi + 0x10]
movzx eax, ax
imul eax, dword [esp + 0x74]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [edi + 0xc]
movzx eax, ax
imul eax, dword [esp + 0x78]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [edi + 8]
movzx eax, ax
imul eax, dword [esp + 0x80]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [edi + 4]
movzx eax, ax
imul eax, dword [esp + 0x90]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [edi]
movzx eax, ax
imul eax, dword [esp + 0x24]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [esp + 0x20]
movzx eax, ax
imul eax, dword [esp + 0x14]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [esp + 0x1c]
sar eax, 0x10
imul eax, ecx
mov ecx, dword [esp + 0x10]
sar esi, 0x10
imul esi, edx
sar ebx, 0x10
imul ebx, dword [esp + 0x68]
add ecx, eax
mov eax, dword [edi + 0x14]
sar eax, 0x10
imul eax, ebp
add ecx, esi
mov edx, dword [esp + 0x20]
add ecx, ebx
sar edx, 0x10
imul edx, dword [esp + 0x14]
add ecx, eax
mov eax, dword [edi + 0x10]
sar eax, 0x10
imul eax, dword [esp + 0x74]
add ecx, eax
mov eax, dword [edi + 0xc]
sar eax, 0x10
imul eax, dword [esp + 0x78]
add ecx, eax
mov eax, dword [edi + 8]
sar eax, 0x10
imul eax, dword [esp + 0x80]
add ecx, eax
mov eax, dword [edi + 4]
sar eax, 0x10
imul eax, dword [esp + 0x90]
add ecx, eax
mov eax, dword [edi]
sar eax, 0x10
imul eax, dword [esp + 0x24]
add eax, dword [esp + 0xa8]
add eax, ecx
add edx, eax
cmp dword [esp + 0x1e4], 0x10
mov dword [esp + 0x20], edx
jne 0x557120
mov eax, dword [esp + 0x1b0]
mov ebp, dword [esp + 0x2c]
mov edi, dword [edi - 0x14]
movsx eax, word [eax + 0x1e]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x1b0]
mov edx, dword [ebp - 0x10]
movsx esi, word [eax + 0x1a]
movsx ecx, word [eax + 0x18]
movsx ebx, word [eax + 0x1c]
movsx eax, word [eax + 0x16]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x1b0]
mov dword [esp + 0x68], esi
movsx ebp, word [eax + 0x14]
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
mov esi, dword [esp + 0x2c]
sar edi, 0x10
imul edi, dword [esp + 0x68]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [esi - 0x18]
movzx eax, ax
imul eax, ebx
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [esi - 0x1c]
movzx eax, ax
imul eax, dword [esp + 0x14]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [esi - 8]
movzx eax, ax
imul eax, ebp
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [esi - 0xc]
movzx eax, ax
imul eax, dword [esp + 0x24]
sar eax, 0x10
add dword [esp + 0x10], eax
mov ecx, dword [esp + 0x10]
add ecx, edx
mov edx, esi
add ecx, edi
mov eax, dword [edx - 0x18]
sar eax, 0x10
imul eax, ebx
add ecx, eax
mov eax, dword [edx - 0x1c]
sar eax, 0x10
imul eax, dword [esp + 0x14]
add ecx, eax
mov eax, dword [edx - 8]
sar eax, 0x10
imul eax, ebp
add ecx, eax
mov eax, dword [edx - 0xc]
mov edx, dword [esp + 0x20]
sar eax, 0x10
imul eax, dword [esp + 0x24]
add edx, eax
add edx, ecx
mov edi, dword [esp + 0x28]
mov ebx, dword [esp + 0x18]
lea esi, [edi - 0x3c]
mov ecx, dword [esp + 0x30]
shl edx, 4
mov dword [esp + 0x20], edx
mov edx, dword [edi - 0x40]
mov ebp, edx
movzx eax, dx
imul eax, ebx
sar ebp, 0x10
imul ebp, ebx
mov dword [esp + 0x1c], esi
sar eax, 0x10
add eax, dword [edi + ecx]
add ebp, eax
mov eax, dword [esi]
mov dword [esp + 0x14], eax
sub eax, ebp
movzx ecx, ax
imul ecx, ebx
sar eax, 0x10
imul eax, ebx
mov dword [edi - 0x40], ebp
sar ecx, 0x10
add ecx, edx
movzx edx, bp
add eax, ecx
sar ebp, 0x10
mov ecx, dword [esp + 0x1b8]
movsx ecx, word [ecx]
imul edx, ecx
imul ebp, ecx
sar edx, 0x10
add edx, dword [esp + 0xac]
add ebp, edx
mov edx, 2
mov dword [esp + 0x10], edx
cmp dword [esp + 0x58], edx
jle 0x557253
mov ebx, dword [esi + 4]
sub ebx, eax
mov dword [esi], eax
movzx ecx, bx
imul ecx, dword [esp + 0x18]
sar ebx, 0x10
imul ebx, dword [esp + 0x18]
sar ecx, 0x10
add ecx, dword [esp + 0x14]
add ebx, ecx
mov ecx, dword [esp + 0x1b8]
movsx ecx, word [ecx + edx*2 - 2]
movzx edx, ax
imul edx, ecx
sar eax, 0x10
imul eax, ecx
sar edx, 0x10
add ebp, eax
add ebp, edx
mov edx, dword [esp + 0x1c]
mov eax, dword [edx + 8]
mov dword [esp + 0x14], eax
sub eax, ebx
movzx ecx, ax
imul ecx, dword [esp + 0x18]
sar eax, 0x10
imul eax, dword [esp + 0x18]
sar ecx, 0x10
add ecx, dword [esi + 4]
mov esi, dword [esp + 0x1c]
add eax, ecx
mov ecx, dword [esp + 0x10]
add esi, 8
mov dword [edx + 4], ebx
mov edx, dword [esp + 0x1b8]
mov dword [esp + 0x1c], esi
movsx ecx, word [edx + ecx*2]
movzx edx, bx
imul edx, ecx
sar ebx, 0x10
imul ebx, ecx
sar edx, 0x10
add ebp, ebx
add ebp, edx
mov edx, dword [esp + 0x10]
add edx, 2
mov dword [esp + 0x10], edx
cmp edx, dword [esp + 0x58]
jl 0x5571a6
mov edi, dword [esp + 0x28]
mov ecx, dword [esp + 0xb0]
movzx edx, ax
mov ebx, dword [esp + 0xb8]
mov dword [edi + ecx], eax
mov ecx, dword [esp + 0xb4]
mov edi, dword [edi]
sar eax, 0xd
and eax, 0xfffffff8
movzx esi, di
movsx ecx, word [ecx]
imul eax, ecx
imul edx, ecx
movsx ecx, bx
sar edx, 0xd
and edx, 0xfffffff8
add edx, eax
mov eax, esi
imul eax, ecx
sar eax, 0xe
and eax, 0xfffffffc
add edx, eax
mov eax, edi
sar eax, 0xe
and eax, 0xfffffffc
sar edi, 0x10
imul eax, ecx
imul edi, dword [esp + 0xc0]
add edx, eax
mov eax, dword [esp + 0x48]
mov eax, dword [eax]
lea ebx, [edx + ebp*8]
mov edx, dword [esp + 0x28]
add edx, 0xfffffb80
mov dword [esp + 0x24], ebx
mov dword [esp + 0x14], edx
mov ecx, dword [edx + eax*4 + 0x3c0]
mov edx, dword [esp + 0x5c]
movzx ebp, cx
movsx eax, dx
imul ebp, eax
mov eax, dword [esp + 0xbc]
imul eax, esi
mov esi, edx
mov edx, dword [esp + 0x14]
sar ecx, 0xe
sar ebp, 0xe
and ecx, 0xfffffffc
and ebp, 0xfffffffc
sar eax, 0xe
and eax, 0xfffffffc
add ebp, eax
movsx eax, si
imul ecx, eax
mov eax, dword [esp + 0x20]
add ebp, ecx
mov ecx, dword [esp + 0x6c]
add ebp, edi
sub eax, ebp
sub eax, ebx
add eax, dword [esp + 0x94]
sar eax, 3
inc eax
sar eax, 1
sub ecx, eax
cmp dword [edx + 0x484], 0
jge 0x557335
neg ecx
cmp ecx, 0x7800
jle 0x557344
mov ecx, 0x7800
jmp 0x557352
cmp ecx, 0xffff8400
mov eax, 0xffff8400
cmovl ecx, eax
mov esi, dword [esp + 0xc4]
mov eax, ecx
sub eax, esi
sar eax, 0xa
test eax, eax
jle 0x55737a
lea ebx, [esi - 0x50]
shl eax, 0xa
add ebx, eax
movzx edi, bx
lea edx, [ebx + 0x400]
movzx esi, dx
jmp 0x5573c1
jne 0x55738c
lea edx, [esi + 0x3b0]
movzx edi, si
mov ebx, esi
movzx esi, dx
jmp 0x5573c1
cmp eax, 0xffffffff
jne 0x5573a5
lea ebx, [esi - 0x3b0]
mov edx, esi
mov eax, ebx
movzx esi, si
neg eax
movzx edi, ax
jmp 0x5573c1
shl eax, 0xa
lea ebx, [esi + 0x50]
add ebx, eax
mov eax, ebx
neg eax
movzx edi, ax
lea edx, [ebx + 0x400]
mov eax, edx
neg eax
movzx esi, ax
mov eax, ecx
movsx edi, di
imul edi, dword [esp + 0x7c]
sub eax, ebx
cwde
sub ecx, edx
imul eax, eax
movsx esi, si
imul esi, dword [esp + 0x7c]
mov dword [esp + 0x10], edx
mov edx, ebx
add edi, eax
movsx eax, cx
imul eax, eax
sar edi, 0xa
add esi, eax
mov eax, dword [esp + 0x28]
sar esi, 0xa
cmp edi, esi
mov ecx, dword [eax + 0xc]
mov eax, dword [esp + 0x10]
cmovge edx, eax
cmovge eax, ebx
mov ebx, dword [esp + 0x3c]
mov dword [esp + 0x10], eax
mov eax, esi
cmovge eax, edi
add eax, ecx
cmp edi, esi
cmovge edi, esi
add edi, ecx
mov ecx, dword [esp + 0x3c]
mov dword [ecx - 0x18], edi
mov edi, dword [esp + 0x14]
mov dword [ecx], eax
mov eax, dword [esp + 0x10]
mov dword [ecx - 0x1c], edx
mov dword [ecx - 4], eax
mov eax, dword [ecx - 0x1c]
mov edi, dword [edi + 0x484]
mov edx, dword [esp + 0x20]
shl eax, 4
mov esi, eax
neg esi
test edi, edi
cmovns esi, eax
add esi, dword [esp + 0x38]
add edx, esi
mov ecx, edx
sub ecx, dword [esp + 0x24]
mov eax, ecx
sub eax, ebp
mov dword [ebx - 0xc], eax
mov eax, ebx
mov dword [eax - 0x10], ecx
mov dword [eax - 8], esi
mov dword [eax - 0x14], edx
mov eax, dword [eax - 4]
mov edx, dword [esp + 0x20]
shl eax, 4
mov esi, eax
neg esi
test edi, edi
cmovns esi, eax
add esi, dword [esp + 0x38]
add edx, esi
mov dword [ebx + 0x10], esi
mov ecx, edx
mov dword [ebx + 4], edx
sub ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x28]
mov eax, ecx
mov dword [ebx + 8], ecx
sub eax, ebp
mov ecx, dword [esp + 0x2c]
add edx, 0x490
add ecx, 0x490
mov dword [ebx + 0xc], eax
mov dword [esp + 0x28], edx
add ebx, 0x30
mov dword [esp + 0x2c], ecx
sub dword [esp + 0x34], 1
mov dword [esp + 0x3c], ebx
jne 0x556e60
mov edi, dword [esp + 0x1ec]
mov ecx, dword [esp + 0x48]
xor ebx, ebx
mov ebp, dword [esp + 0x44]
mov esi, dword [esp + 0xd4]
mov dword [esp + 0x34], ebx
mov eax, dword [ecx]
lea edx, [ebx + 1]
dec eax
and eax, 0x1f
add ebp, eax
mov dword [ecx], eax
and ebp, 0x1f
mov dword [esp + 0x6c], ebp
cmp edi, edx
jle 0x557525
lea esp, [esp]
lea eax, [edx + edx*2]
add eax, eax
mov ecx, dword [esp + eax*8 + 0xd4]
cmp ecx, esi
mov eax, edx
cmovge eax, ebx
inc edx
cmp ecx, esi
mov ebx, eax
cmovge ecx, esi
mov esi, ecx
cmp edx, edi
jl 0x557500
mov dword [esp + 0x34], eax
mov ecx, dword [esp + 0x40]
imul eax, ebx, 0x124
add eax, ebp
mov esi, dword [ecx + eax*4 + 0x1c0]
test edi, edi
jle 0x55756f
lea ecx, [ecx + ebp*4]
mov edx, edi
lea eax, [esp + 0xec]
add ecx, 0x1c0
mov edi, edi
cmp dword [ecx], esi
je 0x557561
add dword [eax - 0x18], 0x7ffffff
add dword [eax], 0x7ffffff
add ecx, 0x490
add eax, 0x30
sub edx, 1
jne 0x557550
mov edi, dword [esp + 0xd4]
xor edx, edx
mov ebx, dword [esp + 0xec]
mov esi, 1
xor ebp, ebp
mov dword [esp + 0x18], edx
cmp dword [esp + 0x1ec], esi
jle 0x5575d6
lea edx, [esi + esi*2]
mov eax, esi
add edx, edx
mov ecx, dword [esp + edx*8 + 0xd4]
cmp ecx, edi
cmovle ecx, edi
cmovle eax, ebp
mov edi, ecx
mov ebp, eax
mov ecx, dword [esp + edx*8 + 0xec]
mov eax, esi
cmp ecx, ebx
cmovge eax, dword [esp + 0x18]
cmovge ecx, ebx
inc esi
mov edx, eax
mov ebx, ecx
mov dword [esp + 0x18], edx
cmp esi, dword [esp + 0x1ec]
jl 0x557593
mov dword [esp + 0x18], eax
mov esi, dword [esp + 0x4c]
cmp ebx, edi
jge 0x557656
mov ecx, dword [esp + 0x40]
mov eax, 0x8c
sub eax, dword [esp + 0x30]
push eax
imul eax, edx, 0x124
add eax, esi
lea eax, [ecx + eax*4]
push eax
imul eax, ebp, 0x124
add eax, esi
lea eax, [ecx + eax*4]
push eax
call fcn.00586300
mov eax, dword [esp + 0x24]
lea edx, [esp + 0xf4]
lea ecx, [esp + 0xdc]
add esp, 0xc
lea eax, [eax + eax*2]
shl eax, 4
add edx, eax
lea eax, [ebp*2]
add eax, ebp
shl eax, 4
add ecx, eax
mov eax, dword [edx]
mov dword [ecx], eax
mov eax, dword [edx + 4]
mov dword [ecx + 4], eax
mov eax, dword [edx + 8]
mov dword [ecx + 8], eax
mov eax, dword [edx + 0xc]
mov dword [ecx + 0xc], eax
mov eax, dword [edx + 0x10]
mov dword [ecx + 0x10], eax
mov eax, dword [edx + 0x14]
mov dword [ecx + 0x14], eax
imul ebx, dword [esp + 0x34], 0x490
mov ebp, dword [esp + 0x40]
add ebx, ebp
cmp dword [esp + 0x1dc], 0
jg 0x557678
cmp esi, dword [esp + 0x44]
jl 0x55772d
mov edi, dword [esp + 0x6c]
mov eax, dword [esp + 0xc8]
sub eax, dword [esp + 0x44]
mov ecx, dword [ebx + edi*4 + 0x240]
sar ecx, 9
inc ecx
sar ecx, 1
mov byte [eax + esi], cl
mov eax, dword [esp + 0x8c]
mov edx, dword [ebx + edi*4 + 0x2c0]
mov esi, dword [eax + edi*4]
movsx ecx, si
sar esi, 0xf
inc esi
movzx eax, dx
sar esi, 1
imul esi, edx
imul eax, ecx
sar edx, 0x10
imul edx, ecx
sar eax, 0x10
add esi, eax
add esi, edx
sar esi, 7
inc esi
sar esi, 1
cmp esi, 0x7fff
jle 0x5576dc
mov esi, 0x7fff
jmp 0x5576ea
cmp esi, 0xffff8000
mov eax, 0xffff8000
cmovl esi, eax
mov eax, dword [esp + 0x60]
mov edx, dword [esp + 0x84]
mov word [eax], si
mov esi, dword [esp + 0x88]
mov eax, dword [ebx + edi*4 + 0x3c0]
mov ecx, dword [esi + 0x110c]
sub ecx, dword [esp + 0x44]
mov dword [esi + ecx*4 + 0x500], eax
mov ecx, dword [esi + 0x1108]
sub ecx, dword [esp + 0x44]
mov eax, dword [ebx + edi*4 + 0x340]
mov dword [edx + ecx*4], eax
jmp 0x557734
mov esi, dword [esp + 0x88]
inc dword [esi + 0x110c]
inc dword [esi + 0x1108]
mov edx, dword [esp + 0x1ec]
mov ebx, dword [esp + 0x48]
test edx, edx
jle 0x5577e9
mov esi, ebp
lea edi, [esp + 0xd8]
mov ebp, edx
mov edi, edi
mov edx, dword [esp + 0x30]
lea edi, [edi + 0x30]
mov ecx, dword [esp + 0x64]
add edx, esi
mov eax, dword [edi - 0x2c]
mov dword [edx + ecx + 0x484], eax
mov ecx, dword [edi - 0x30]
mov dword [edx + 0x484], ecx
mov eax, dword [ebx]
mov edx, dword [edi - 0x38]
mov dword [esi + eax*4 + 0x2c0], ecx
mov eax, dword [ebx]
mov ecx, dword [edi - 0x24]
add ecx, ecx
mov dword [esi + eax*4 + 0x240], edx
mov eax, dword [ebx]
sar edx, 9
inc edx
sar edx, 1
mov dword [esi + eax*4 + 0x340], ecx
mov ecx, dword [ebx]
mov eax, dword [edi - 0x28]
mov dword [esi + ecx*4 + 0x3c0], eax
add dword [esi + 0x484], edx
mov eax, dword [ebx]
mov ecx, dword [esi + 0x484]
mov dword [esi + eax*4 + 0x1c0], ecx
mov eax, dword [edi - 0x34]
mov dword [esi + 0x48c], eax
add esi, 0x490
sub ebp, 1
jne 0x557760
mov edx, dword [esp + 0x1ec]
mov ebp, dword [esp + 0x40]
mov eax, dword [ebx]
mov ecx, dword [esp + 0x8c]
mov ebx, dword [esp + 0xcc]
add dword [esp + 0x60], 2
sub dword [esp + 0x64], 4
add dword [esp + 0x30], 4
mov esi, dword [esp + 0x54]
mov dword [ecx + eax*4], ebx
mov eax, dword [esp + 0x4c]
mov ebx, dword [esp + 0x1b8]
inc eax
cmp eax, dword [esp + 0x1d8]
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x198]
jl 0x556c30
mov eax, dword [esp + 0x1d8]
test edx, edx
jle 0x55785f
lea esi, [eax*4]
mov edi, ebp
add esi, ebp
mov ecx, 0x20
add ebp, 0x490
rep movsd dword es:[edi], dword [esi]
sub edx, 1
jne 0x557842
mov ecx, dword [esp + 0x190]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0056eeb4
add esp, 0x184
ret