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

Disassembly:
sub esp, 0x16c
mov eax, dword [ecx + 0x110c]
sub eax, dword [esp + 0x194]
add eax, 0x141
mov dword [esp + 0x68], ecx
push ebp
push esi
mov ebp, edx
lea esi, [ecx + eax*4]
mov dword [esp + 0x30], ebp
mov eax, dword [ecx + 0x1108]
sub eax, dword [esp + 0x19c]
mov ecx, dword [esp + 0x188]
add ecx, 8
mov dword [esp + 0x5c], esi
push edi
lea edx, [ecx + eax*4]
mov eax, dword [esp + 0x1b0]
xor ecx, ecx
sar eax, 6
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x1bc]
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0x1d0]
mov dword [esp + 0x5c], edx
test ecx, ecx
jle 0x56c8c2
mov ecx, dword [esp + 0x1d8]
mov edi, dword [esp + 0x188]
push ebx
mov ebx, dword [esp + 0x1d8]
lea eax, [ecx + ecx]
mov dword [esp + 0x48], 0x80
sub edi, eax
mov dword [esp + 0x44], 0x404
mov eax, dword [esp + 0x184]
mov ebx, dword [ebx]
add eax, 0x404
mov dword [esp + 0xac], eax
mov eax, dword [esp + 0x188]
sub eax, ecx
mov dword [esp + 0x70], edi
mov ecx, dword [esp + 0x19c]
mov edi, dword [esp + 0x180]
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0x1d0]
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x1bc]
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0x1b8]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x1b0]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x1ac]
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x1a8]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x7c], eax
jmp 0x56bc10
cmp edi, 2
jne 0x56bcfb
movsx eax, word [ecx + 6]
mov edi, dword [edx - 0x10]
movsx esi, word [ecx + 8]
mov dword [esp + 0x28], eax
movsx eax, word [ecx + 4]
mov dword [esp + 0x40], eax
mov ebp, dword [edx - 4]
movsx ebx, word [ecx + 2]
mov edx, dword [edx]
movsx ecx, word [ecx]
movzx eax, di
imul eax, esi
mov dword [esp + 0x20], ebx
sar edi, 0xf
and edi, 0xfffffffe
imul edi, esi
sar eax, 0xf
and eax, 0xfffffffe
mov esi, dword [esp + 0x64]
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 + 0x60]
sar ebp, 0xf
and ebp, 0xfffffffe
imul ebp, dword [esp + 0x20]
sar eax, 0xf
and eax, 0xfffffffe
add dword [esp + 0x10], eax
mov eax, dword [ebx - 8]
movzx eax, ax
imul eax, dword [esp + 0x40]
sar eax, 0xf
and eax, 0xfffffffe
add dword [esp + 0x10], eax
mov eax, dword [ebx - 0xc]
movzx eax, ax
imul eax, dword [esp + 0x28]
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 + 0x14]
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 + 0x28]
and ecx, 0xfffffffe
imul ecx, dword [esp + 0x40]
add ebp, 4
add eax, ecx
add ebp, eax
add edx, 4
mov dword [esp + 0x60], edx
jmp 0x56bcfd
xor ebp, ebp
cmp dword [esp + 0x1a4], 0
mov dword [esp + 0x40], ebp
jle 0x56bd61
mov edi, dword [esi - 8]
add edi, dword [esi]
mov edx, dword [esi - 4]
mov eax, dword [esp + 0x7c]
movsx esi, ax
sar eax, 0x10
movzx ecx, dx
imul ecx, eax
mov eax, dword [esp + 0x7c]
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 + 0x64], 4
mov dword [esp + 0x50], ebp
jmp 0x56bd69
mov dword [esp + 0x50], 0
mov edi, dword [esp + 0x1d4]
test edi, edi
jle 0x56c4c9
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0xac]
add edx, 0xfffffb7c
mov ebp, dword [esp + 0x1c8]
mov dword [esp + 0x80], edx
mov dword [esp + 0x20], edi
mov eax, dword [edx + eax]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x1cc]
sar eax, 1
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x94]
cwde
mov dword [esp + 0x24], eax
mov eax, ebp
sar eax, 1
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x1a0]
lea eax, [eax + ebp*2]
add eax, 0xfffffffe
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x6c]
sar eax, 0x10
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x6c]
sar eax, 0xe
and eax, 0xfffffffc
mov dword [esp + 0x68], eax
lea eax, [esp + 0xd8]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x38]
lea ecx, [eax + 0x480]
add eax, 0x460
add edx, eax
mov dword [esp + 0x30], ecx
lea eax, [ebp*4 - 0x44]
mov dword [esp + 0x34], edx
mov dword [esp + 0xa8], eax
lea eax, [ebx*4 - 0xc0]
mov dword [esp + 0xa0], eax
jmp 0x56be40
imul eax, dword [ecx + 4], 0xbb38435
mov esi, dword [esp + 0x198]
add eax, 0x3619636b
mov dword [ecx + 4], eax
mov eax, dword [edx - 4]
mov dword [esp + 0x2c], eax
movsx eax, word [esi + 0x12]
mov dword [esp + 0x18], eax
movsx eax, word [esi + 0x10]
mov dword [esp + 0x1c], eax
movsx eax, word [esi + 0xe]
mov dword [esp + 0x4c], eax
movsx eax, word [esi + 0xc]
mov dword [esp + 0x88], eax
movsx eax, word [esi + 0xa]
mov dword [esp + 0x84], eax
movsx eax, word [esi + 8]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x198]
movsx edi, word [esi + 4]
movsx ebp, word [esi + 6]
mov ebx, dword [edx + 0x18]
mov esi, dword [edx + 0x1c]
movsx edx, word [eax + 2]
mov eax, dword [esp + 0x80]
mov dword [esp + 0x3c], edi
mov eax, dword [eax + ecx]
mov dword [esp + 0xa4], eax
movzx eax, ax
mov ecx, dword [esp + 0x198]
movsx ecx, word [ecx]
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 + 0x34]
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 + 0x28]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [edi + 0xc]
movzx eax, ax
imul eax, dword [esp + 0x84]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [edi + 8]
movzx eax, ax
imul eax, dword [esp + 0x88]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [edi + 4]
movzx eax, ax
imul eax, dword [esp + 0x4c]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [edi]
movzx eax, ax
imul eax, dword [esp + 0x1c]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [esp + 0x2c]
movzx eax, ax
imul eax, dword [esp + 0x18]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [esp + 0xa4]
sar eax, 0x10
imul eax, ecx
mov ecx, dword [esp + 0x10]
add ecx, eax
sar esi, 0x10
imul esi, edx
sar ebx, 0x10
imul ebx, dword [esp + 0x3c]
mov edx, dword [esp + 0x2c]
sar edx, 0x10
add ecx, esi
imul edx, dword [esp + 0x18]
mov esi, edi
add ecx, ebx
mov eax, dword [esi + 0x14]
sar eax, 0x10
imul eax, ebp
add ecx, eax
mov eax, dword [esi + 0x10]
sar eax, 0x10
imul eax, dword [esp + 0x28]
add ecx, eax
mov eax, dword [esi + 0xc]
sar eax, 0x10
imul eax, dword [esp + 0x84]
add ecx, eax
mov eax, dword [esi + 8]
sar eax, 0x10
imul eax, dword [esp + 0x88]
add ecx, eax
mov eax, dword [esi + 4]
sar eax, 0x10
imul eax, dword [esp + 0x4c]
add ecx, eax
mov eax, dword [esi]
sar eax, 0x10
imul eax, dword [esp + 0x1c]
add eax, dword [esp + 0x8c]
add eax, ecx
add edx, eax
cmp dword [esp + 0x1cc], 0x10
mov dword [esp + 0x2c], edx
jne 0x56c101
mov ecx, dword [esp + 0x198]
mov ebp, dword [esi - 0x10]
mov edi, dword [esi - 0xc]
movsx eax, word [ecx + 0x1e]
mov dword [esp + 0x4c], eax
movsx eax, word [ecx + 0x1c]
movsx ebx, word [ecx + 0x18]
mov dword [esp + 0x1c], eax
movsx eax, word [ecx + 0x1a]
movsx esi, word [ecx + 0x16]
movsx ecx, word [ecx + 0x14]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x3c], ebx
mov edx, dword [eax - 8]
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 + 0x34]
sar ebp, 0x10
imul ebp, dword [esp + 0x3c]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [ebx - 0x14]
movzx eax, ax
imul eax, dword [esp + 0x18]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [ebx - 0x18]
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 + 0x4c]
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 - 0x14]
sar eax, 0x10
imul eax, dword [esp + 0x18]
add ecx, eax
mov eax, dword [edx - 0x18]
sar eax, 0x10
imul eax, dword [esp + 0x1c]
add ecx, eax
mov eax, dword [edx - 0x1c]
mov edx, dword [esp + 0x2c]
sar eax, 0x10
imul eax, dword [esp + 0x4c]
add edx, eax
add edx, ecx
mov edi, dword [esp + 0x30]
mov ebp, dword [esp + 0x24]
lea ebx, [edi - 0x3c]
mov ecx, dword [esp + 0x80]
shl edx, 4
mov dword [esp + 0x2c], edx
mov edx, dword [edi - 0x40]
mov esi, edx
movzx eax, dx
imul eax, ebp
sar esi, 0x10
imul esi, ebp
mov dword [esp + 0x10], ebx
sar eax, 0x10
add eax, dword [ecx + edi]
add esi, eax
mov eax, dword [ebx]
mov dword [esp + 0x18], eax
sub eax, esi
movzx ecx, ax
imul ecx, ebp
sar eax, 0x10
imul eax, ebp
mov dword [edi - 0x40], esi
sar ecx, 0x10
add ecx, edx
movzx edx, si
add eax, ecx
sar esi, 0x10
mov ecx, dword [esp + 0x1a0]
movsx ecx, word [ecx]
imul edx, ecx
imul esi, ecx
sar edx, 0x10
add edx, dword [esp + 0x90]
add esi, edx
mov edx, 2
mov dword [esp + 0x1c], esi
mov dword [esp + 0x28], edx
cmp dword [esp + 0x1c8], edx
jle 0x56c248
mov ebp, dword [ebx + 4]
sub ebp, eax
movzx ecx, bp
imul ecx, dword [esp + 0x24]
sar ebp, 0x10
imul ebp, dword [esp + 0x24]
sar ecx, 0x10
add ecx, dword [esp + 0x18]
add ebp, ecx
mov ecx, dword [esp + 0x10]
mov dword [ecx], eax
mov ecx, dword [esp + 0x1a0]
movsx ecx, word [ecx + edx*2 - 2]
movzx edx, ax
sar eax, 0x10
imul eax, ecx
imul edx, ecx
add esi, eax
mov eax, dword [esp + 0x10]
add eax, 8
sar edx, 0x10
mov dword [esp + 0x10], eax
add esi, edx
mov edx, dword [esp + 0x1a0]
mov eax, dword [eax]
mov dword [esp + 0x18], eax
sub eax, ebp
movzx ecx, ax
imul ecx, dword [esp + 0x24]
sar eax, 0x10
imul eax, dword [esp + 0x24]
sar ecx, 0x10
add ecx, dword [ebx + 4]
add eax, ecx
mov dword [ebx + 4], ebp
mov ecx, dword [esp + 0x28]
mov ebx, dword [esp + 0x10]
movsx ecx, word [edx + ecx*2]
movzx edx, bp
imul edx, ecx
sar ebp, 0x10
imul ebp, ecx
sar edx, 0x10
add esi, ebp
add esi, edx
mov edx, dword [esp + 0x28]
add edx, 2
mov dword [esp + 0x28], edx
cmp edx, dword [esp + 0x1c8]
jl 0x56c191
mov edi, dword [esp + 0x30]
mov dword [esp + 0x1c], esi
mov ecx, dword [esp + 0xa8]
movzx esi, ax
mov dword [edi + ecx], eax
mov ecx, dword [esp + 0x98]
mov ebx, dword [edi]
sar eax, 0xd
and eax, 0xfffffff8
movzx edi, bx
movsx edx, word [ecx]
mov ecx, edi
imul eax, edx
imul esi, edx
mov dword [esp + 0x3c], edi
mov edi, dword [esp + 0x9c]
movsx ebp, di
imul ecx, ebp
sar esi, 0xd
and esi, 0xfffffff8
sar ecx, 0xe
and ecx, 0xfffffffc
add esi, ecx
add esi, eax
mov eax, ebx
sar eax, 0xe
and eax, 0xfffffffc
sar ebx, 0x10
imul eax, ebp
imul ebx, dword [esp + 0x68]
add esi, eax
mov eax, dword [esp + 0x1c]
lea ebp, [esi + eax*8]
mov esi, dword [esp + 0x30]
mov eax, dword [esp + 0xa0]
mov dword [esp + 0x18], ebp
mov ecx, dword [esi + eax]
mov esi, dword [esp + 0x6c]
mov edi, esi
movzx edx, cx
movsx eax, si
imul edx, eax
mov eax, dword [esp + 0x74]
imul eax, dword [esp + 0x3c]
mov esi, dword [esp + 0x30]
sar ecx, 0xe
sar edx, 0xe
and ecx, 0xfffffffc
and edx, 0xfffffffc
sar eax, 0xe
and eax, 0xfffffffc
add edx, eax
movsx eax, di
imul ecx, eax
mov eax, dword [esp + 0x2c]
add edx, ecx
mov ecx, dword [esp + 0x54]
add edx, ebx
sub eax, edx
mov dword [esp + 0x1c], edx
sub eax, ebp
add eax, dword [esp + 0x50]
sar eax, 3
inc eax
sar eax, 1
sub ecx, eax
cmp dword [esi + 4], 0
jge 0x56c31f
neg ecx
cmp ecx, 0x7800
jle 0x56c32e
mov ecx, 0x7800
jmp 0x56c33c
cmp ecx, 0xffff8400
mov eax, 0xffff8400
cmovl ecx, eax
mov edx, dword [esp + 0xb0]
mov eax, ecx
sub eax, edx
sar eax, 0xa
test eax, eax
jle 0x56c371
shl eax, 0xa
lea ebx, [edx - 0x50]
mov edx, dword [esp + 0x58]
add ebx, eax
movsx eax, dx
movsx esi, bx
imul esi, eax
lea ebp, [ebx + 0x400]
movsx edi, bp
imul edi, eax
jmp 0x56c3df
jne 0x56c390
lea ebp, [edx + 0x3b0]
movsx esi, dx
mov ebx, edx
movsx edi, bp
mov edx, dword [esp + 0x58]
movsx eax, dx
imul esi, eax
imul edi, eax
jmp 0x56c3df
cmp eax, 0xffffffff
jne 0x56c3b6
mov edi, dword [esp + 0x58]
lea ebx, [edx - 0x3b0]
mov eax, ebx
mov ebp, edx
neg eax
movsx esi, ax
movsx eax, di
movsx edi, dx
imul esi, eax
imul edi, eax
jmp 0x56c3df
shl eax, 0xa
lea ebx, [edx + 0x50]
add ebx, eax
mov eax, ebx
neg eax
movsx esi, ax
mov eax, dword [esp + 0x58]
lea ebp, [ebx + 0x400]
movsx edx, ax
mov eax, ebp
neg eax
imul esi, edx
movsx edi, ax
imul edi, edx
movzx ecx, cx
mov eax, ecx
sub ecx, ebp
movsx ecx, cx
sub eax, ebx
imul ecx, ecx
movsx edx, ax
imul edx, edx
add ecx, edi
mov edi, dword [esp + 0x30]
sar ecx, 0xa
add edx, esi
sar edx, 0xa
mov eax, dword [edi + 0xc]
lea esi, [ecx + eax]
add eax, edx
cmp edx, ecx
jge 0x56c412
mov ecx, esi
jmp 0x56c420
mov dword [esp + 0x3c], ebx
mov ecx, eax
mov ebx, ebp
mov eax, esi
mov ebp, dword [esp + 0x3c]
mov edx, dword [esp + 0x14]
mov dword [edx - 0x18], eax
mov dword [edx], ecx
mov dword [edx - 0x1c], ebx
mov dword [edx - 4], ebp
mov edi, dword [edi + 4]
mov edx, dword [esp + 0x2c]
shl ebx, 4
mov esi, ebx
neg esi
test edi, edi
cmovns esi, ebx
mov ebx, dword [esp + 0x14]
add esi, dword [esp + 0x40]
add edx, esi
shl ebp, 4
mov ecx, edx
sub ecx, dword [esp + 0x18]
mov eax, ecx
sub eax, dword [esp + 0x1c]
mov dword [ebx - 0xc], eax
mov eax, ebx
mov dword [eax - 8], esi
mov esi, ebp
neg esi
mov dword [eax - 0x14], edx
mov edx, dword [esp + 0x2c]
test edi, edi
mov dword [eax - 0x10], ecx
cmovns esi, ebp
add esi, dword [esp + 0x40]
add edx, esi
mov dword [ebx + 0x10], esi
mov ecx, edx
mov dword [ebx + 4], edx
sub ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x34]
mov eax, ecx
sub eax, dword [esp + 0x1c]
add edx, 0x490
mov dword [ebx + 8], ecx
mov ecx, dword [esp + 0x30]
mov dword [ebx + 0xc], eax
add ecx, 0x490
add ebx, 0x30
mov dword [esp + 0x30], ecx
sub dword [esp + 0x20], 1
mov dword [esp + 0x34], edx
mov dword [esp + 0x14], ebx
jne 0x56be40
mov edi, dword [esp + 0x1d4]
mov ecx, dword [esp + 0x1d8]
xor ebx, ebx
mov ebp, dword [esp + 0x1dc]
mov esi, dword [esp + 0xc0]
mov eax, dword [ecx]
lea edx, [ebx + 1]
dec eax
and eax, 0x1f
add ebp, eax
mov dword [esp + 0x14], eax
and ebp, 0x1f
mov dword [ecx], eax
mov dword [esp + 0x54], ebp
cmp edi, edx
jle 0x56c53a
lea esp, [esp]
lea eax, [edx + edx*2]
add eax, eax
mov ecx, dword [esp + eax*8 + 0xc0]
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 0x56c500
mov ecx, dword [esp + 0x38]
imul eax, ebx, 0x124
mov dword [esp + 0x20], ebx
add eax, ebp
mov esi, dword [ecx + eax*4 + 0x1c0]
jmp 0x56c54f
mov eax, dword [esp + 0x38]
mov dword [esp + 0x20], ebx
mov esi, dword [eax + ebp*4 + 0x1c0]
test edi, edi
jle 0x56c580
mov ecx, eax
lea ecx, [ecx + ebp*4]
mov edx, edi
lea eax, [esp + 0xd8]
add ecx, 0x1c0
cmp dword [ecx], esi
je 0x56c572
add dword [eax - 0x18], 0x7ffffff
add dword [eax], 0x7ffffff
add ecx, 0x490
add eax, 0x30
sub edx, 1
jne 0x56c561
mov edi, dword [esp + 0xc0]
xor edx, edx
mov ebx, dword [esp + 0xd8]
mov esi, 1
xor ebp, ebp
mov dword [esp + 0x24], edx
cmp dword [esp + 0x1d4], esi
jle 0x56c5e7
lea edx, [esi + esi*2]
mov eax, esi
add edx, edx
mov ecx, dword [esp + edx*8 + 0xc0]
cmp ecx, edi
cmovle ecx, edi
cmovle eax, ebp
mov edi, ecx
mov ebp, eax
mov ecx, dword [esp + edx*8 + 0xd8]
mov eax, esi
cmp ecx, ebx
cmovge eax, dword [esp + 0x24]
cmovge ecx, ebx
inc esi
mov edx, eax
mov ebx, ecx
mov dword [esp + 0x24], edx
cmp esi, dword [esp + 0x1d4]
jl 0x56c5a4
mov dword [esp + 0x24], eax
mov esi, dword [esp + 0x5c]
cmp ebx, edi
jge 0x56c667
mov ecx, dword [esp + 0x38]
mov eax, 0x510
sub eax, dword [esp + 0x48]
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.005854c0
mov eax, dword [esp + 0x30]
lea edx, [esp + 0xe0]
lea ecx, [esp + 0xc8]
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 + 0x20], 0x490
mov ebp, dword [esp + 0x38]
add ebx, ebp
cmp dword [esp + 0x1c4], 0
jg 0x56c68c
cmp esi, dword [esp + 0x1dc]
jl 0x56c740
mov edi, dword [esp + 0x54]
mov ecx, dword [esp + 0xb4]
mov eax, dword [ebx + edi*4 + 0x240]
sar eax, 9
inc eax
sar eax, 1
mov byte [ecx + esi], al
mov eax, dword [esp + 0x194]
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 0x56c6ec
mov esi, 0x7fff
jmp 0x56c6fa
cmp esi, 0xffff8000
mov eax, 0xffff8000
cmovl esi, eax
mov eax, dword [esp + 0x70]
mov edx, dword [esp + 0x78]
mov word [eax], si
mov ecx, dword [edx + 0x110c]
sub ecx, dword [esp + 0x1dc]
mov eax, dword [ebx + edi*4 + 0x3c0]
mov dword [edx + ecx*4 + 0x500], eax
mov ecx, dword [edx + 0x1108]
mov eax, dword [ebx + edi*4 + 0x340]
sub ecx, dword [esp + 0x1dc]
mov ebx, dword [esp + 0x190]
mov dword [ebx + ecx*4], eax
jmp 0x56c744
mov edx, dword [esp + 0x78]
inc dword [edx + 0x110c]
inc dword [edx + 0x1108]
mov eax, dword [esp + 0x1d4]
mov ebx, dword [esp + 0x14]
test eax, eax
jle 0x56c86e
mov edi, dword [esp + 0x48]
lea eax, [ebx*4 + 0x240]
mov ecx, dword [esp + 0x44]
lea esi, [esp + 0xc4]
sub eax, edi
add ecx, 0xfffffffc
mov dword [esp + 0x20], eax
lea eax, [ebx*4 + 0x340]
sub eax, edi
mov dword [esp + 0x50], ecx
mov dword [esp + 0x54], eax
lea edx, [edi + ebp]
lea eax, [ebx*4 + 0x3c0]
sub eax, edi
lea ebp, [ebx*4 + 0x2c0]
mov dword [esp + 0x68], eax
sub ebp, edi
lea eax, [ebx*4 + 0x1c0]
mov ebx, dword [esp + 0x20]
sub eax, edi
mov edi, dword [esp + 0x1d4]
mov dword [esp + 0x74], eax
jmp 0x56c7d0
mov eax, dword [esi + 4]
lea edx, [edx + 0x490]
mov dword [ecx + edx - 0x490], eax
lea esi, [esi + 0x30]
mov eax, dword [esi - 0x30]
mov ecx, dword [esi - 0x38]
mov dword [edx - 0x490], eax
mov dword [edx + ebp - 0x490], eax
mov eax, dword [esi - 0x24]
mov dword [edx + ebx - 0x490], ecx
add eax, eax
mov ebx, dword [esp + 0x54]
sar ecx, 9
inc ecx
sar ecx, 1
mov dword [edx + ebx - 0x490], eax
mov ebx, dword [esp + 0x68]
mov eax, dword [esi - 0x28]
mov dword [edx + ebx - 0x490], eax
mov ebx, dword [esp + 0x44]
add dword [edx + ebx - 0x490], ecx
mov ecx, dword [esp + 0x74]
mov eax, dword [edx + ebx - 0x490]
mov dword [edx + ecx - 0x490], eax
mov eax, dword [esi - 0x34]
mov ecx, dword [esp + 0x50]
mov dword [edx + ebx - 0x488], eax
mov ebx, dword [esp + 0x20]
sub edi, 1
jne 0x56c7d0
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x1d4]
mov ebp, dword [esp + 0x38]
mov dword [esp + 0x44], ecx
jmp 0x56c873
add dword [esp + 0x44], 0xfffffffc
mov ecx, dword [esp + 0x194]
mov edx, dword [esp + 0xb8]
add dword [esp + 0x70], 2
add dword [esp + 0x48], 4
mov esi, dword [esp + 0x64]
mov edi, dword [esp + 0x180]
mov dword [ecx + ebx*4], edx
mov ecx, dword [esp + 0x5c]
mov edx, dword [esp + 0x60]
inc ecx
cmp ecx, dword [esp + 0x1c0]
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x19c]
jl 0x56bc10
mov ecx, dword [esp + 0x1c0]
pop ebx
test eax, eax
jle 0x56c8f4
jmp 0x56c8d0
lea esi, [ecx*4]
mov edi, ebp
add esi, ebp
mov ecx, 0x20
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x1bc]
add ebp, 0x490
sub eax, 1
jne 0x56c8d0
pop edi
pop esi
pop ebp
add esp, 0x16c
ret