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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push esi
push edi
push ebx
lea esp, [esp - 0x124]
mov ecx, dword [ebp + 8]
mov esi, dword [ecx + 0x20]
test esi, esi
jne 0x1005e448
mov ebx, dword [ecx + 0x58]
cmp dword [ecx + 0x70], 4
je 0x1005ee3b
mov edi, dword [ecx + 0x50]
cmp ebx, 2
je 0x1005e433
cmp ebx, 4
je 0x1005e433
cmp ebx, 6
je 0x1005e433
cmp ebx, 8
je 0x1005e433
cmp ebx, 0x10
jne 0x1005e44b
lea edx, [edi]
lea edx, [edx + edi]
lea edx, [edx + edi]
mov eax, dword [ecx + edx*8 + 0x70]
mov dword [ecx + 0x58], eax
mov dword [ecx + edx*8 + 0x70], ebx
jmp 0x1005e44b
mov edi, dword [ecx + 0x50]
mov eax, dword [ebp + 0xc]
test edi, edi
jl 0x1005e4b9
mov edx, 1
xor ebx, ebx
mov dword [esp + 4], edx
mov dword [esp + 0x98], edi
mov dword [esp], esi
mov esi, ebx
mov edi, eax
add esi, ebx
add esi, ebx
mov edx, dword [ebp + 8]
or edi, dword [edx + esi*8 + 0x58]
mov ecx, dword [edx + esi*8 + 0x58]
test edi, 0xffffff00
je 0x1005e487
cdq
idiv ecx
jmp 0x1005e48c
div cl
movzx eax, al
mov edx, dword [ebp + 8]
inc ebx
mov edi, dword [esp + 4]
mov dword [edx + esi*8 + 0x60], edi
imul edi, ecx
mov dword [esp + 4], edi
cmp ebx, dword [esp + 0x98]
mov dword [edx + esi*8 + 0x5c], eax
jle 0x1005e467
mov edi, dword [esp + 0x98]
mov esi, dword [esp]
mov ecx, dword [ebp + 8]
mov eax, dword [ebp + 0x14]
or eax, dword [ebp + 0xc]
test eax, 0xffffff00
je 0x1005e4d4
mov eax, dword [ebp + 0x14]
cdq
mov eax, dword [ebp + 0x14]
mov ebx, dword [ebp + 0xc]
idiv ebx
jmp 0x1005e4dd
mov eax, dword [ebp + 0x14]
div byte [ebp + 0xc]
movzx eax, al
mov dword [esp + 8], 0
test edi, edi
jl 0x1005f96c
xor esi, esi
push 1
pop ebx
mov dword [esp + 4], esi
mov edx, ebx
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], esi
mov dword [esp + 0x98], edi
mov ebx, dword [esp + 4]
mov dword [esp + 0x90], eax
jmp 0x1005e519
mov edx, 1
mov eax, edx
mov dword [esp + 0x94], eax
jmp 0x1005e535
mov eax, dword [esp + 0x94]
imul eax, edi
mov dword [esp + 0x94], eax
mov edx, dword [ebp + 8]
lea ecx, [ebx + ebx]
lea ecx, [ecx + ebx]
mov eax, dword [esp + 0x94]
mov dword [esp + 0x9c], ecx
mov edi, dword [edx + ecx*8 + 0x58]
mov esi, dword [edx + ecx*8 + 0x5c]
mov dword [edx + ecx*8 + 0x64], eax
cmp dword [edx + ecx*8 + 0x58], 0xd
jle 0x1005e592
test edi, 1
je 0x1005e592
cmp edi, dword [esp + 0x10]
jne 0x1005ee7d
mov edx, dword [ebp + 8]
mov ecx, dword [esp + 0x9c]
cmp edi, dword [esp + 8]
mov eax, dword [esp + 0xc]
mov dword [edx + ecx*8 + 0x68], eax
mov eax, dword [esp + 8]
cmovge eax, edi
mov dword [esp + 8], eax
cmp ebx, dword [esp + 0x98]
jne 0x1005e5d6
cmp esi, 0xd
jle 0x1005e5d6
test esi, 1
je 0x1005e5d6
cmp esi, dword [esp + 0x10]
jne 0x1005eebb
mov edx, dword [ebp + 8]
mov ecx, dword [esp + 0x9c]
cmp esi, dword [esp + 8]
mov eax, dword [esp + 0xc]
mov dword [edx + ecx*8 + 0x80], eax
mov eax, dword [esp + 8]
cmovge eax, esi
mov dword [esp + 8], eax
mov ecx, dword [ebp + 0x18]
lea edx, [esi*8]
imul edx, edi
mov eax, dword [ecx]
neg eax
and eax, 0x3f
add eax, dword [ecx]
add edx, eax
mov dword [esp + 0xa0], eax
mov dword [ecx], edx
mov ecx, dword [ebp + 8]
mov eax, dword [esp + 0x9c]
mov edx, dword [esp + 0x90]
imul edx, dword [ecx + eax*8 + 0x60]
mov dword [esp + 0xa4], edx
mov eax, dword [esp + 0xa0]
cmp dword [ecx + 0x20], 0
jne 0x1005ee05
cmp edi, 0xd
jg 0x1005eb49
test esi, 1
je 0x1005e833
mov edx, dword [ebp + 8]
cmp dword [edx + 0x24], 0
je 0x1005e705
test esi, esi
jle 0x1005ee05
shl dword [esp + 0xa4], 3
lea ecx, [edi*8]
add ecx, 0xfffffff8
xor edx, edx
mov dword [esp + 0x34], ecx
lea ecx, [edi - 1]
mov dword [esp + 0x30], edx
cmp edi, 1
mov dword [esp + 0xb4], ecx
mov dword [esp], eax
jle 0x1005ee05
mov dword [esp + 0xa0], eax
mov dword [esp + 0x80], esi
mov dword [esp + 0xec], edi
mov dword [esp + 4], ebx
mov esi, dword [esp]
mov ecx, edx
mov eax, dword [esp + 0x30]
mov edx, dword [ebp + 0x10]
xor ebx, ebx
mov dword [esp + 0x30], eax
lea edi, [edx + ecx]
xor edx, edx
mov eax, dword [edx + edi]
mov dword [esi + ebx*8], eax
mov eax, dword [edx + edi + 4]
lea edx, [edx + ecx]
mov dword [esi + ebx*8 + 4], eax
lea ebx, [ebx + 1]
cmp ebx, dword [esp + 0xb4]
jb 0x1005e6b1
mov eax, dword [esp + 0x30]
inc eax
add esi, dword [esp + 0x34]
add ecx, dword [esp + 0xa4]
cmp eax, dword [esp + 0x80]
jb 0x1005e6a3
mov eax, dword [esp + 0xa0]
mov esi, dword [esp + 0x80]
mov edi, dword [esp + 0xec]
mov ebx, dword [esp + 4]
jmp 0x1005ee05
mov edx, esi
shr edx, 0x1f
add edx, esi
sar edx, 1
mov dword [esp + 0x68], edx
cmp esi, 1
jle 0x1005ee05
mov edx, dword [esp + 0xa4]
mov ecx, dword [ebp + 0x10]
mov dword [esp + 0x80], esi
mov dword [esp + 0x50], 0
lea esi, [edx*8]
shl edx, 4
lea ecx, [ecx + esi]
mov dword [esp + 0x54], ecx
lea ecx, [edi*8]
mov dword [esp + 0x58], esi
neg ecx
mov esi, dword [ebp + 0x10]
add ecx, eax
add esi, edx
mov dword [esp + 0x5c], esi
mov esi, edi
shl esi, 4
add ecx, esi
add esi, 0xfffffff0
mov dword [esp + 0xa4], edx
lea edx, [edi - 1]
mov dword [esp + 0x64], esi
mov dword [esp + 0xec], edi
mov dword [esp + 0xe0], edx
mov dword [esp + 0x60], ecx
mov esi, dword [esp + 0x80]
mov edi, dword [esp + 0x50]
mov dword [esp + 0xa0], eax
mov dword [esp + 4], ebx
cmp dword [esp + 0xec], 1
jle 0x1005ef11
mov esi, dword [esp + 0xa4]
mov ebx, esi
imul ebx, edi
xor ecx, ecx
mov eax, dword [esp + 0x58]
add esi, ebx
mov edx, dword [esp + 0x5c]
mov dword [esp + 0xe4], esi
lea eax, [eax + ebx]
mov dword [esp + 0xe8], eax
add edx, ebx
mov eax, dword [esp + 0x64]
imul eax, edi
add ebx, dword [esp + 0x54]
add eax, dword [esp + 0x60]
mov esi, ecx
mov dword [esp + 0x50], edi
mov edi, dword [ebx + 4]
inc ecx
mov dword [esi + eax - 4], edi
mov edi, dword [edx + 4]
mov dword [esi + eax + 4], edi
mov edi, dword [ebx]
mov dword [esi + eax - 8], edi
mov edi, dword [edx]
mov dword [esi + eax], edi
add esi, 0x10
add ebx, dword [esp + 0xe8]
add edx, dword [esp + 0xe4]
cmp ecx, dword [esp + 0xe0]
jb 0x1005e7eb
mov edi, dword [esp + 0x50]
inc edi
cmp edi, dword [esp + 0x68]
jb 0x1005e79d
jmp 0x1005e6e7
test esi, 2
je 0x1005e96b
mov dword [esp + 0xa0], eax
lea edx, [esi + 1]
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
sar ecx, 1
test esi, esi
mov eax, dword [esp + 0xa0]
mov dword [esp + 0x14], ecx
jle 0x1005ee05
mov edx, dword [esp + 0xa4]
mov ecx, dword [ebp + 0x10]
mov dword [esp + 0x1c], 0
mov dword [esp + 4], ebx
lea edx, [edx*8]
mov dword [esp + 0x20], edx
lea ecx, [ecx + edx]
mov dword [esp + 0x18], ecx
lea edx, [edi - 1]
mov dword [esp + 0xa8], edx
mov edx, edi
shl edx, 4
mov ecx, edx
neg ecx
add ecx, edx
add edx, 0xfffffff0
add ecx, eax
shl dword [esp + 0xa4], 4
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], edx
mov dword [esp + 0xa0], eax
mov dword [esp + 0x80], esi
mov dword [esp + 0xec], edi
cmp dword [esp + 0xec], 1
jle 0x1005eee8
mov esi, dword [esp + 0xa4]
xor edx, edx
imul esi, ebx
mov eax, dword [ebp + 0x10]
mov edi, dword [esp + 0x20]
add edi, esi
mov ecx, dword [esp + 0x18]
lea eax, [eax + esi]
mov dword [esp + 0x2c], eax
add ecx, esi
mov eax, dword [esp + 0x28]
imul eax, ebx
mov dword [esp + 0xac], esi
mov dword [esp + 0x1c], ebx
add eax, dword [esp + 0x24]
mov ebx, edx
mov esi, dword [esp + 0x2c]
mov dword [esp + 0xb0], edi
mov edi, dword [esi + 4]
inc edx
mov dword [ebx + eax + 4], edi
mov edi, dword [ecx + 4]
mov dword [ebx + eax + 0xc], edi
mov edi, dword [esi]
mov dword [ebx + eax], edi
mov edi, dword [ecx]
mov dword [ebx + eax + 8], edi
add ebx, 0x10
add esi, dword [esp + 0xac]
add ecx, dword [esp + 0xb0]
cmp edx, dword [esp + 0xa8]
jb 0x1005e923
mov ebx, dword [esp + 0x1c]
inc ebx
cmp ebx, dword [esp + 0x14]
jb 0x1005e8d0
jmp 0x1005e6e7
test esi, esi
jle 0x1005ee05
lea ecx, [edi*8]
add ecx, 0xfffffff8
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x38], 0
lea ecx, [edx*8]
mov dword [esp + 0x44], ecx
mov ecx, edx
shl ecx, 4
mov dword [esp + 0x48], ecx
lea ecx, [edx + edx]
add ecx, edx
shl ecx, 3
mov dword [esp + 0x40], ecx
cmp edi, 1
jle 0x1005ee05
mov dword [esp + 0x80], esi
mov dword [esp + 0xa0], eax
mov dword [esp + 0xec], edi
mov dword [esp + 4], ebx
mov esi, dword [esp + 0x38]
mov edx, dword [esp + 0x44]
mov ebx, edx
imul ebx, esi
mov edi, dword [esp + 0x48]
add edx, ebx
mov ecx, dword [esp + 0x4c]
mov eax, ebx
imul ecx, esi
add ecx, dword [esp + 0xa0]
lea edi, [edi + ebx]
mov dword [esp + 0xd4], edi
mov edi, dword [esp + 0x40]
mov dword [esp + 0xcc], 1
mov dword [esp + 0x3c], 0x20
mov dword [esp + 0xc0], edx
lea edi, [edi + ebx]
mov dword [esp + 0xd0], edi
mov edi, dword [esp + 0xa4]
imul edi, esi
mov dword [esp + 0xc8], edi
mov dword [esp + 0xbc], ebx
mov dword [esp + 0xc4], ecx
mov dword [esp + 0x38], esi
mov dword [esp + 0xb8], edi
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0xc8]
mov esi, dword [esp + 0xcc]
mov ebx, dword [ebp + 0x10]
mov edi, dword [esp + 0xc4]
mov dword [esp + 0xc8], edx
mov edx, dword [ebx + edx*8]
mov dword [ecx + edi - 0x20], edx
mov edx, dword [esp + 0xc0]
imul edx, esi
mov dword [esp + 0xd8], edx
mov edx, dword [ebx + edx]
mov dword [ecx + edi - 0x1c], edx
mov edx, dword [esp + 0xd4]
imul edx, esi
mov dword [esp + 0xdc], edx
mov edx, dword [ebx + edx]
mov dword [ecx + edi - 0x18], edx
mov edx, dword [esp + 0xd0]
imul edx, esi
mov dword [esp + 0xcc], esi
mov esi, dword [ebx + edx]
mov dword [ecx + edi - 0x14], esi
mov esi, dword [eax + ebx + 4]
mov dword [ecx + edi - 0x10], esi
mov esi, dword [esp + 0xd8]
add eax, dword [esp + 0xbc]
mov esi, dword [esi + ebx + 4]
mov dword [ecx + edi - 0xc], esi
mov esi, dword [esp + 0xdc]
mov edx, dword [edx + ebx + 4]
mov esi, dword [esi + ebx + 4]
mov dword [ecx + edi - 8], esi
mov dword [ecx + edi - 4], edx
add ecx, 0x20
mov edx, dword [esp + 0xc8]
mov esi, dword [esp + 0xcc]
inc esi
add edx, dword [esp + 0xb8]
cmp esi, dword [esp + 0xec]
jl 0x1005ea5f
mov esi, dword [esp + 0x38]
add esi, 4
cmp esi, dword [esp + 0x80]
jl 0x1005e9cf
mov eax, dword [esp + 0xa0]
mov esi, dword [esp + 0x80]
mov edi, dword [esp + 0xec]
mov ebx, dword [esp + 4]
jmp 0x1005ee05
test esi, 3
je 0x1005ec2c
test esi, esi
jle 0x1005ee05
xor ecx, ecx
lea edx, [edi*8]
mov dword [esp + 0x84], ecx
mov dword [esp + 0x88], edx
mov dword [esp + 0xf0], ecx
mov dword [esp + 0x80], esi
mov dword [esp + 0xec], edi
shl dword [esp + 0xa4], 3
mov esi, eax
mov edx, ecx
mov ecx, dword [esp + 0x88]
mov edi, dword [esp + 0x84]
mov dword [esp + 0xa0], eax
mov dword [esp + 4], ebx
xor eax, eax
mov dword [esp + 0xf0], edx
xor ebx, ebx
mov dword [esp + 0x84], edi
mov edx, dword [esp + 0xec]
mov ecx, dword [ebp + 0x10]
mov edi, dword [ebx + ecx]
mov dword [esi + eax*8], edi
mov edi, dword [ebx + ecx + 4]
mov dword [esi + eax*8 + 4], edi
lea eax, [eax + 1]
add ebx, dword [esp + 0xf0]
cmp eax, edx
jl 0x1005ebca
mov edx, dword [esp + 0xf0]
mov edi, dword [esp + 0x84]
inc edi
mov ecx, dword [esp + 0x88]
add esi, ecx
add edx, dword [esp + 0xa4]
cmp edi, dword [esp + 0x80]
jl 0x1005ebae
mov eax, dword [esp + 0xa0]
mov esi, dword [esp + 0x80]
mov edi, dword [esp + 0xec]
mov ebx, dword [esp + 4]
jmp 0x1005ee05
test esi, esi
jle 0x1005edef
lea ecx, [edi*8]
mov dword [esp + 0x78], ecx
mov dword [esp + 0x8c], 0
mov dword [esp + 0x80], esi
lea ecx, [edx*8]
mov dword [esp + 0x74], ecx
mov ecx, edx
shl ecx, 4
mov dword [esp + 0x7c], ecx
lea ecx, [edx + edx]
add ecx, edx
shl ecx, 3
mov dword [esp + 0x70], ecx
mov dword [esp + 0xa0], eax
mov dword [esp + 0xec], edi
mov dword [esp + 4], ebx
mov esi, dword [esp + 0x8c]
mov ecx, dword [esp + 0xa4]
xor eax, eax
imul ecx, esi
mov edx, dword [esp + 0x74]
mov dword [esp + 0x108], ecx
mov ecx, edx
imul ecx, esi
mov ebx, dword [esp + 0x78]
add edx, ecx
imul ebx, esi
mov edi, dword [esp + 0x7c]
add edi, ecx
mov dword [esp + 0x10c], edi
mov edi, dword [esp + 0x70]
add ebx, dword [esp + 0xa0]
mov dword [esp + 0x104], eax
mov dword [esp + 0xf8], edx
lea edi, [edi + ecx]
mov dword [esp + 0x100], edi
mov dword [esp + 0x6c], eax
mov dword [esp + 0xf4], ecx
mov dword [esp + 0xfc], ebx
mov dword [esp + 0x8c], esi
mov edx, dword [esp + 0x104]
mov ebx, eax
mov ecx, dword [esp + 0x6c]
mov esi, dword [ebp + 0x10]
mov edi, dword [esp + 0xfc]
mov dword [esp + 0x104], edx
mov edx, dword [esi + edx*8]
mov dword [ebx + edi], edx
mov edx, dword [esp + 0xf8]
imul edx, eax
mov dword [esp + 0x114], edx
mov edx, dword [esi + edx]
mov dword [ebx + edi + 4], edx
mov edx, dword [esp + 0x10c]
imul edx, eax
mov dword [esp + 0x118], edx
mov edx, dword [esi + edx]
mov dword [ebx + edi + 8], edx
mov edx, dword [esp + 0x100]
imul edx, eax
mov dword [esp + 0x110], eax
mov eax, dword [esi + edx]
mov dword [ebx + edi + 0xc], eax
mov eax, dword [ecx + esi + 4]
mov dword [ebx + edi + 0x10], eax
mov eax, dword [esp + 0x114]
add ecx, dword [esp + 0xf4]
mov eax, dword [eax + esi + 4]
mov dword [ebx + edi + 0x14], eax
mov eax, dword [esp + 0x118]
mov edx, dword [edx + esi + 4]
mov eax, dword [eax + esi + 4]
mov dword [ebx + edi + 0x18], eax
mov dword [ebx + edi + 0x1c], edx
add ebx, 0x20
mov edx, dword [esp + 0x104]
mov eax, dword [esp + 0x110]
inc eax
add edx, dword [esp + 0x108]
cmp eax, dword [esp + 0xec]
jl 0x1005ed08
mov esi, dword [esp + 0x8c]
add esi, 4
cmp esi, dword [esp + 0x80]
jl 0x1005ec8a
mov eax, dword [esp + 0xa0]
mov esi, dword [esp + 0x80]
mov edi, dword [esp + 0xec]
mov ebx, dword [esp + 4]
mov ecx, dword [esp + 8]
lea edx, [edi*4]
cmp edx, dword [esp + 8]
cmovge ecx, edx
mov dword [esp + 8], ecx
mov edx, dword [ebp + 8]
inc ebx
mov ecx, dword [esp + 0x9c]
cmp ebx, dword [edx + 0x50]
mov dword [edx + ecx*8 + 0x6c], eax
mov eax, dword [edx + 0x50]
mov dword [esp + 0x98], eax
jg 0x1005ef3a
imul esi, edi
cmp esi, 0x7d0
jle 0x1005e524
jmp 0x1005e514
cmp ebx, 6
je 0x1005ee75
shl ebx, 2
mov edi, dword [ecx + 0x50]
test edi, edi
mov dword [ecx + 0x58], ebx
jle 0x1005ee6c
mov eax, 1
lea ebx, [eax]
lea ebx, [ebx + eax]
lea ebx, [ebx + eax]
lea eax, [eax + 1]
cmp eax, edi
mov edx, dword [ecx + ebx*8 + 0x70]
mov dword [ecx + ebx*8 + 0x58], edx
jle 0x1005ee52
mov ebx, dword [ecx + 0x58]
dec edi
mov dword [ecx + 0x50], edi
jmp 0x1005e41a
mov edi, dword [ecx + 0x50]
jmp 0x1005e433
mov eax, dword [ebp + 0x18]
mov ecx, dword [ebp + 0x14]
mov edx, dword [eax]
neg edx
and edx, 0x3f
add edx, dword [eax]
mov dword [esp + 0xc], edx
push edx
push ecx
mov eax, dword [ebp + 0x10]
push eax
push edi
call fcn.1005fc90
lea esp, [esp + 0x10]
mov edx, dword [ebp + 0x18]
mov dword [esp + 0x10], edi
mov dword [edx], eax
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x50]
mov dword [esp + 0x98], ecx
jmp 0x1005e571
mov eax, dword [ebp + 0x18]
mov ecx, dword [ebp + 0x14]
mov edx, dword [eax]
neg edx
and edx, 0x3f
add edx, dword [eax]
mov dword [esp + 0xc], edx
push edx
push ecx
mov eax, dword [ebp + 0x10]
push eax
push esi
call fcn.1005fc90
lea esp, [esp + 0x10]
mov edx, dword [ebp + 0x18]
mov dword [edx], eax
jmp 0x1005e5b2
inc ebx
cmp ebx, dword [esp + 0x14]
jb 0x1005e8d0
mov eax, dword [esp + 0xa0]
mov esi, dword [esp + 0x80]
mov edi, dword [esp + 0xec]
mov ebx, dword [esp + 4]
jmp 0x1005ee05
inc edi
cmp edi, dword [esp + 0x68]
jb 0x1005e79d
mov eax, dword [esp + 0xa0]
mov esi, dword [esp + 0x80]
mov edi, dword [esp + 0xec]
mov ebx, dword [esp + 4]
jmp 0x1005ee05
mov ecx, dword [ebp + 8]
mov edx, dword [esp + 0x94]
mov eax, dword [esp + 0x90]
mov esi, dword [ecx + 0x20]
mov ebx, dword [esp + 8]
add ebx, dword [ebp + 0xc]
shl ebx, 3
add ebx, 0x80
mov dword [ecx + 0x18], ebx
test esi, esi
je 0x1005f5d8
mov edx, dword [ebp + 0x1c]
mov edi, dword [ebp + 0xc]
mov ebx, dword [edx]
neg ebx
lea esi, [edi*4]
and ebx, 0x3f
add ebx, dword [edx]
mov edi, ebx
add edi, esi
mov dword [edx], edi
mov dword [ecx + 0x54], ebx
mov dword [esp + 0x50], ebx
mov ebx, dword [edx]
neg ebx
and ebx, 0x3f
add ebx, dword [edx]
add esi, ebx
mov dword [edx], esi
mov esi, dword [ecx + 0x50]
mov edx, esi
add edx, esi
add edx, dword [ecx + 0x50]
mov dword [esp + 0x20], ebx
mov edx, dword [ecx + edx*8 + 0x5c]
test edx, edx
jle 0x1005f072
cmp edx, 4
jl 0x1005f917
mov edi, dword [esp + 0x50]
and edi, 0xf
je 0x1005efd9
test edi, 3
jne 0x1005f917
neg edi
add edi, 0x10
shr edi, 2
mov ebx, edi
add ebx, 4
cmp edx, ebx
jl 0x1005f917
mov esi, edx
sub esi, edi
and esi, 3
neg esi
add esi, edx
test edi, edi
jbe 0x1005f008
mov ecx, dword [esp + 0x50]
xor ebx, ebx
mov dword [ecx + ebx*4], ebx
lea ebx, [ebx + 1]
cmp ebx, edi
jb 0x1005effb
mov ecx, dword [ebp + 8]
mov dword [esp], edx
mov edx, 4
mov dword [esp + 4], esi
lea ebx, [edi + 1]
lea esi, [edi + 2]
movd xmm0, edx
lea edx, [edi + 3]
pshufd xmm1, xmm0, 0
movd xmm0, edi
movd xmm2, ebx
movd xmm4, esi
punpcklqdq xmm0, xmm2
movd xmm3, edx
punpcklqdq xmm4, xmm3
shufps xmm0, xmm4, 0x88
mov esi, dword [esp + 4]
mov edx, dword [esp]
mov ebx, dword [esp + 0x50]
movdqa xmmword [ebx + edi*4], xmm0
lea edi, [edi + 4]
paddd xmm0, xmm1
cmp edi, esi
jb 0x1005f04d
cmp esi, edx
jae 0x1005f06f
mov ebx, dword [esp + 0x50]
mov dword [ebx + esi*4], esi
lea esi, [esi + 1]
cmp esi, edx
jb 0x1005f065
mov esi, dword [ecx + 0x50]
mov edx, esi
inc edx
test esi, esi
jl 0x1005f533
mov edi, dword [esp + 0x20]
lea ebx, [esi + esi]
add ebx, esi
and edi, 0xf
shl ebx, 3
mov esi, edi
add ebx, dword [ebp + 8]
and esi, 3
mov dword [esp + 0x1c], ebx
mov ebx, edi
neg ebx
add ebx, 0x10
mov dword [esp + 0x14], 0
shr ebx, 2
mov dword [esp + 0xc], esi
mov dword [esp + 4], ebx
mov dword [esp + 0x10], edi
mov dword [esp + 0x18], edx
mov dword [esp + 0x90], eax
mov esi, dword [esp + 0x14]
mov edx, esi
add edx, esi
add edx, esi
shl edx, 3
neg edx
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax + edx + 0x6c]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x90]
imul ecx, dword [eax + edx + 0x60]
mov edi, dword [eax + edx + 0x58]
mov ebx, dword [eax + edx + 0x5c]
cmp dword [eax + edx + 0x58], 0xd
jg 0x1005f18d
test ebx, ebx
jle 0x1005f522
shl ecx, 3
lea eax, [edi*8]
xor edx, edx
add eax, 0xfffffff8
mov dword [esp + 0x40], eax
lea eax, [edi - 1]
mov dword [esp + 0x60], eax
xor eax, eax
mov dword [esp + 0x38], ecx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x54], edi
mov dword [esp + 0x14], esi
mov ecx, dword [esp + 0x50]
cmp dword [esp + 0x54], 1
mov ebx, dword [ecx + edx*4]
jle 0x1005f91e
imul ebx, dword [esp + 0x38]
xor edi, edi
mov ecx, dword [esp + 0x44]
mov esi, dword [ebp + 0x10]
mov dword [esp + 0x4c], eax
add esi, ebx
mov dword [esp + 0x48], edx
lea ecx, [ecx + eax]
mov eax, edi
mov edx, dword [eax + esi]
mov dword [ecx + edi*8], edx
mov edx, dword [eax + esi + 4]
lea eax, [eax + ebx]
mov dword [ecx + edi*8 + 4], edx
lea edi, [edi + 1]
cmp edi, dword [esp + 0x60]
jb 0x1005f15e
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x48]
inc edx
add eax, dword [esp + 0x40]
cmp edx, dword [esp + 0x58]
jb 0x1005f12f
jmp 0x1005f204
test ebx, ebx
jle 0x1005f522
shl ecx, 3
lea edx, [edi*8]
mov dword [esp + 0x58], ebx
xor eax, eax
mov dword [esp + 0x54], edi
mov dword [esp + 0x3c], edx
mov dword [esp + 0x38], ecx
mov dword [esp + 0x14], esi
mov ebx, dword [esp + 0x44]
mov edi, dword [esp + 0x50]
mov edx, dword [edi + eax*4]
xor esi, esi
imul edx, dword [esp + 0x38]
xor ecx, ecx
mov dword [esp + 0x5c], edx
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x54]
mov edx, dword [ebp + 0x10]
mov edi, dword [ecx + edx]
mov dword [ebx + esi*8], edi
mov edi, dword [ecx + edx + 4]
mov dword [ebx + esi*8 + 4], edi
lea esi, [esi + 1]
add ecx, dword [esp + 0x5c]
cmp esi, eax
jb 0x1005f1d8
mov eax, dword [esp + 0x34]
inc eax
add ebx, dword [esp + 0x3c]
mov edi, dword [esp + 0x50]
cmp eax, dword [esp + 0x58]
jb 0x1005f1bd
mov ebx, dword [esp + 0x58]
mov edi, dword [esp + 0x54]
mov esi, dword [esp + 0x14]
cmp ebx, 6
jle 0x1005f325
mov eax, dword [esp + 0x50]
cmp eax, dword [esp + 0x20]
jae 0x1005f236
mov edx, dword [esp + 0x20]
lea eax, [ebx*4]
sub edx, dword [esp + 0x50]
cmp eax, edx
jle 0x1005f257
mov eax, dword [esp + 0x50]
cmp eax, dword [esp + 0x20]
jbe 0x1005f325
lea edx, [ebx*4]
sub eax, dword [esp + 0x20]
cmp eax, edx
jl 0x1005f325
mov eax, dword [esp + 0x10]
mov edx, eax
test eax, eax
je 0x1005f270
cmp dword [esp + 0xc], 0
jne 0x1005f932
mov edx, dword [esp + 4]
mov eax, edx
add eax, 4
cmp ebx, eax
jl 0x1005f932
mov ecx, ebx
sub ecx, edx
and ecx, 3
neg ecx
add ecx, ebx
test edx, edx
jbe 0x1005f2bb
mov dword [esp + 0x54], edi
xor eax, eax
mov dword [esp + 0x14], esi
mov dword [esp + 0x58], ebx
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x50]
mov ebx, dword [edi + eax*4]
mov dword [esi + eax*4], ebx
lea eax, [eax + 1]
cmp eax, edx
jb 0x1005f2a2
mov ebx, dword [esp + 0x58]
mov edi, dword [esp + 0x54]
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x50]
lea eax, [eax + edx*4]
test al, 0xf
je 0x1005f2e5
mov dword [esp + 0x14], esi
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x50]
lddqu xmm0, xmmword [esi + edx*4]
movdqa xmmword [eax + edx*4], xmm0
lea edx, [edx + 4]
cmp edx, ecx
jb 0x1005f2d2
jmp 0x1005f302
mov dword [esp + 0x14], esi
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x50]
movdqa xmm0, xmmword [esi + edx*4]
movdqa xmmword [eax + edx*4], xmm0
lea edx, [edx + 4]
cmp edx, ecx
jb 0x1005f2f1
mov esi, dword [esp + 0x14]
cmp ecx, ebx
jae 0x1005f344
mov dword [esp + 0x14], esi
mov edx, dword [esp + 0x20]
mov esi, dword [esp + 0x50]
mov eax, dword [esi + ecx*4]
mov dword [edx + ecx*4], eax
lea ecx, [ecx + 1]
cmp ecx, ebx
jb 0x1005f316
jmp 0x1005f340
mov dword [esp + 0x14], esi
xor eax, eax
mov ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x50]
mov edx, dword [esi + eax*4]
mov dword [ecx + eax*4], edx
lea eax, [eax + 1]
cmp eax, ebx
jb 0x1005f333
mov esi, dword [esp + 0x14]
test edi, edi
jle 0x1005f522
mov dword [esp + 0x54], edi
lea edx, [edi*4]
mov dword [esp], edx
xor eax, eax
mov dword [esp + 0x14], esi
mov edx, dword [esp + 0x50]
cmp dword [esp + 0x54], 6
jg 0x1005f378
mov esi, eax
imul esi, dword [esp]
add esi, edx
jmp 0x1005f4ee
mov dword [esp + 0x28], eax
lea ecx, [ebx*4]
mov dword [esp + 0x58], ebx
mov eax, dword [esp + 0x54]
movd xmm0, ecx
pshufd xmm0, xmm0, 0
mov ecx, dword [esp + 0x28]
mov edi, ecx
imul edi, dword [esp]
mov edx, dword [esp + 0x20]
mov esi, dword [esp + 0x50]
mov ebx, esi
add ebx, edi
lea edx, [edx + ecx*4]
mov dword [esp + 0x2c], edx
lea ecx, [esi + edi - 4]
mov dword [esp + 0x30], ebx
cmp ecx, edx
jbe 0x1005f3c8
mov edx, ecx
sub edx, dword [esp + 0x2c]
cmp edx, 4
jge 0x1005f3e7
cmp ecx, dword [esp + 0x2c]
jae 0x1005f4e0
neg ecx
lea edx, [eax*4]
add ecx, dword [esp + 0x2c]
cmp ecx, edx
jl 0x1005f4e0
mov esi, ebx
and esi, 0xf
je 0x1005f402
test esi, 3
jne 0x1005f939
neg esi
add esi, 0x10
shr esi, 2
mov edx, esi
add edx, 4
cmp eax, edx
jl 0x1005f939
mov edx, eax
sub edx, esi
and edx, 3
neg edx
add edx, eax
test esi, esi
jbe 0x1005f446
xor ebx, ebx
mov dword [esp + 0x24], edx
xor ecx, ecx
mov edx, dword [esp + 0x2c]
mov edi, dword [esp + 0x30]
mov eax, dword [edx]
add eax, ecx
mov dword [edi + ebx*4], eax
inc ebx
add ecx, dword [esp + 0x58]
cmp ebx, esi
jb 0x1005f42e
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x54]
mov dword [esp + 0x24], edx
mov edx, esi
imul edx, dword [esp + 0x58]
mov ebx, dword [esp + 0x58]
mov ecx, ebx
add ecx, edx
mov edi, ebx
add edi, ecx
movd xmm1, edx
mov edx, dword [esp + 0x24]
movd xmm2, ecx
movd xmm4, edi
add edi, ebx
punpcklqdq xmm1, xmm2
mov ecx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x30]
movd xmm3, edi
punpcklqdq xmm4, xmm3
shufps xmm1, xmm4, 0x88
movd xmm2, dword [ecx]
pshufd xmm3, xmm2, 0
paddd xmm3, xmm1
paddd xmm1, xmm0
movdqa xmmword [ebx + esi*4], xmm3
add esi, 4
cmp esi, edx
jb 0x1005f487
mov ecx, dword [esp + 0x58]
imul ecx, edx
cmp edx, eax
jae 0x1005f940
mov esi, dword [esp + 0x2c]
mov edi, dword [esp + 0x30]
mov ebx, dword [esi]
add ebx, ecx
mov dword [edi + edx*4], ebx
inc edx
add ecx, dword [esp + 0x58]
cmp edx, eax
jb 0x1005f4bb
mov edx, dword [esp + 0x28]
inc edx
mov dword [esp + 0x28], edx
cmp edx, dword [esp + 0x58]
jb 0x1005f394
jmp 0x1005f51e
mov esi, ebx
mov eax, dword [esp + 0x28]
mov ebx, dword [esp + 0x58]
mov edx, dword [esp + 0x50]
xor edi, edi
mov dword [esp + 0x58], ebx
xor ecx, ecx
mov ebx, dword [esp + 0x20]
mov edx, dword [ebx + eax*4]
add edx, ecx
mov dword [esi + edi*4], edx
inc edi
add ecx, dword [esp + 0x58]
cmp edi, dword [esp + 0x54]
jb 0x1005f4fa
inc eax
mov ebx, dword [esp + 0x58]
cmp eax, ebx
mov edx, dword [esp + 0x50]
jb 0x1005f364
mov esi, dword [esp + 0x14]
inc esi
cmp esi, dword [esp + 0x18]
jb 0x1005f0c5
mov ecx, dword [ebp + 8]
mov esi, dword [ecx + 0x50]
lea eax, [esi]
lea eax, [eax + esi]
lea eax, [eax + esi]
mov edx, dword [ebp + 0xc]
mov ebx, dword [ecx + eax*8 + 0x5c]
or edx, ebx
test edx, 0xffffff00
je 0x1005f557
mov eax, dword [ebp + 0xc]
cdq
mov eax, dword [ebp + 0xc]
idiv ebx
jmp 0x1005f55f
mov eax, dword [ebp + 0xc]
div bl
movzx eax, al
test esi, esi
js 0x1005f5a0
mov edi, 1
lea edx, [esi]
lea edx, [edx + esi]
lea edx, [edx + esi]
cmp eax, 0x7d0
mov dword [ecx + edx*8 + 0x64], edi
mov ebx, dword [ecx + edx*8 + 0x58]
jle 0x1005f584
cmp esi, 1
jne 0x1005f587
imul edi, ebx
mov edx, eax
or edx, ebx
test edx, 0xffffff00
je 0x1005f598
cdq
idiv ebx
jmp 0x1005f59d
div bl
movzx eax, al
dec esi
jns 0x1005f568
mov eax, dword [ebp + 0xc]
lea edx, [eax*8]
mov eax, dword [ecx + 0x18]
sub eax, edx
cmp dword [esp + 8], 0
jne 0x1005f5bf
mov dword [ecx + 0x18], 0
jmp 0x1005f5c2
mov dword [ecx + 0x18], eax
mov dword [ecx + 0x54], 0
lea esp, [esp + 0x124]
pop ebx
pop edi
pop esi
lea esp, [ebp]
pop ebp
ret
mov ebx, dword [ebp + 0x18]
lea eax, [edx*4]
mov esi, dword [ebx]
neg esi
and esi, 0x3f
add esi, dword [ebx]
add eax, esi
mov dword [ebx], eax
mov dword [esi], 0
mov ebx, dword [ecx + 0x50]
mov eax, ebx
dec eax
js 0x1005f905
imul eax, eax, 0x18
movdqa xmm0, xmmword [0x10394a70]
add eax, dword [ebp + 8]
mov dword [esp + 0x20], eax
mov eax, esi
and eax, 0xf
mov edi, eax
and edi, 3
mov dword [esp + 0x18], edi
mov edi, eax
neg edi
add edi, 0x10
mov dword [esp + 0x2c], 1
mov dword [esp + 0x10], 0
shr edi, 2
mov dword [esp + 0x14], eax
mov dword [esp + 0x94], edx
mov dword [esp + 0xc], edi
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x28], esi
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x2c]
mov ebx, edx
add ebx, edx
add ebx, edx
shl ebx, 3
neg ebx
mov ecx, dword [esp + 0x20]
cmp eax, dword [esp + 0x94]
mov ecx, dword [ecx + ebx + 0x58]
jge 0x1005f819
mov ebx, ecx
dec ebx
js 0x1005f806
test eax, eax
jle 0x1005f806
xor esi, esi
lea edi, [ecx*4]
imul edi, eax
lea ebx, [eax*4]
add edi, dword [esp + 0x28]
mov dword [esp], edi
sub edi, ebx
mov dword [esp + 0x34], esi
mov dword [esp + 0x30], esi
mov dword [esp + 0x38], esi
mov dword [esp + 0x10], edx
mov dword [esp + 0x3c], edi
mov dword [esp + 0x40], ecx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x2c], eax
mov esi, dword [esp + 0x30]
mov edx, dword [esp + 0x34]
cmp dword [esp + 0x2c], 6
jg 0x1005f6df
mov eax, dword [esp + 0x38]
jmp 0x1005f7a8
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x30], esi
mov esi, dword [esp + 0x40]
lea eax, [eax*4]
neg eax
add eax, dword [esp]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
imul eax, edx
mov ebx, dword [esp + 4]
sub ebx, eax
add ebx, 0xfffffffc
mov dword [esp + 8], ebx
cmp ebx, dword [esp + 0x28]
jbe 0x1005f72c
mov ebx, dword [esp + 0x2c]
lea edi, [ebx*4]
mov ebx, dword [esp + 8]
sub ebx, dword [esp + 0x28]
cmp edi, ebx
jle 0x1005f74f
mov ebx, dword [esp + 0x28]
cmp ebx, dword [esp + 8]
jbe 0x1005f7a0
mov edi, dword [esp + 0x2c]
mov ebx, dword [esp + 8]
neg ebx
add ebx, dword [esp + 0x28]
lea edi, [edi*4]
cmp ebx, edi
jl 0x1005f7a0
neg eax
xor ebx, ebx
mov dword [esp + 0x40], esi
add eax, dword [esp + 0x3c]
mov esi, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
mov dword [esp + 0x34], edx
mov edx, dword [edi + ebx*4]
imul edx, ecx
dec edx
add edx, dword [esp + 0x40]
mov dword [eax + ebx*4], edx
lea ebx, [ebx + 1]
cmp ebx, esi
jb 0x1005f767
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x34]
inc edx
add eax, dword [esp + 0x24]
mov esi, dword [esp + 0x40]
dec dword [esp + 0x30]
dec esi
mov dword [esp + 0x38], eax
cmp edx, ecx
jb 0x1005f6fb
jmp 0x1005f7fe
mov dword [esp + 0x40], esi
mov esi, dword [esp + 0x30]
neg eax
lea edi, [ecx + esi]
mov dword [esp + 0x44], edi
xor ebx, ebx
mov dword [esp + 0x30], esi
add eax, dword [esp + 0x3c]
mov esi, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
mov dword [esp + 0x34], edx
mov edx, dword [edi + ebx*4]
imul edx, ecx
add edx, dword [esp + 0x44]
dec edx
mov dword [eax + ebx*4], edx
lea ebx, [ebx + 1]
cmp ebx, esi
jb 0x1005f7c7
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x34]
inc edx
add eax, dword [esp + 0x24]
mov esi, dword [esp + 0x30]
dec dword [esp + 0x40]
dec esi
mov dword [esp + 0x38], eax
cmp edx, ecx
jb 0x1005f6cf
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x2c]
inc edx
imul eax, ecx
cmp edx, dword [esp + 0x1c]
jb 0x1005f65a
jmp 0x1005f8fe
test eax, eax
jle 0x1005f8f3
cmp eax, 4
jl 0x1005f958
mov esi, dword [esp + 0x14]
mov ebx, esi
test esi, esi
je 0x1005f843
cmp dword [esp + 0x18], 0
jne 0x1005f958
mov ebx, dword [esp + 0xc]
mov esi, ebx
add esi, 4
cmp eax, esi
jl 0x1005f958
mov edi, eax
sub edi, ebx
and edi, 3
neg edi
add edi, eax
test ebx, ebx
jbe 0x1005f885
mov dword [esp + 0x10], edx
xor esi, esi
mov dword [esp + 0x2c], eax
mov edx, dword [esp + 0x28]
mov eax, dword [edx + esi*4]
imul eax, ecx
mov dword [edx + esi*4], eax
lea esi, [esi + 1]
cmp esi, ebx
jb 0x1005f86d
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x2c]
movd xmm1, ecx
pshufd xmm2, xmm1, 0
movdqa xmm1, xmm2
mov esi, dword [esp + 0x28]
psrlq xmm1, 0x20
movdqa xmm3, xmmword [esi + ebx*4]
movdqa xmm4, xmm2
pmuludq xmm4, xmm3
psrlq xmm3, 0x20
pmuludq xmm3, xmm1
pand xmm4, xmm0
psllq xmm3, 0x20
por xmm4, xmm3
movdqa xmmword [esi + ebx*4], xmm4
lea ebx, [ebx + 4]
cmp ebx, edi
jb 0x1005f89b
cmp edi, eax
jae 0x1005f95f
mov esi, dword [esp + 0x28]
mov ebx, dword [esi + edi*4]
imul ebx, ecx
mov dword [esi + edi*4], ebx
lea edi, [edi + 1]
cmp edi, eax
jb 0x1005f8d6
inc edx
cmp edx, dword [esp + 0x1c]
jb 0x1005f65a
jmp 0x1005f8fe
inc edx
cmp edx, dword [esp + 0x1c]
jb 0x1005f65a
mov esi, dword [esp + 0x28]
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x54], esi
lea esp, [esp + 0x124]
pop ebx
pop edi
pop esi
lea esp, [ebp]
pop ebp
ret
xor esi, esi
jmp 0x1005f05d
inc edx
add eax, dword [esp + 0x40]
cmp edx, dword [esp + 0x58]
jb 0x1005f12f
jmp 0x1005f204
xor ecx, ecx
jmp 0x1005f306
xor edx, edx
jmp 0x1005f4a4
mov edx, dword [esp + 0x28]
inc edx
mov dword [esp + 0x28], edx
cmp edx, dword [esp + 0x58]
jb 0x1005f394
jmp 0x1005f51e
xor edi, edi
jmp 0x1005f8ca
inc edx
cmp edx, dword [esp + 0x1c]
jb 0x1005f65a
jmp 0x1005f8fe
xor edx, edx
jmp 0x1005ef4e