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

Disassembly:
push 0xffffffffffffffff
push 0x711181
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x11c
push ebx
push ebp
push esi
mov esi, ecx
push edi
mov eax, dword [esp + 0x13c]
mov edi, dword [esi]
mov cl, byte [esp + 0x2b]
imul edi, dword [esi + 4]
xor ebx, ebx
mov dword [esp + 0x2c], eax
cmp edi, ebx
mov dword [esp + 0x78], ebx
mov byte [esp + 0x68], cl
mov eax, edi
jge 0x5f3088
xor eax, eax
lea edx, [eax*4]
push edx
call fcn.00652710
add esp, 4
lea ecx, [esp + 0x78]
mov dword [esp + 0x6c], eax
push ecx
push edi
push eax
lea ecx, [esp + 0x74]
call fcn.00435f20
mov ecx, dword [esp + 0x6c]
lea edx, [ecx + edi*4]
mov dword [esp + 0x70], edx
mov dword [esp + 0x74], edx
mov dword [esp + 0x134], ebx
xor eax, eax
cmp ecx, ebx
je 0x5f30e1
mov edi, edx
sub edi, ecx
sar edi, 2
cmp eax, edi
jae 0x5f30e1
mov dword [ecx + eax*4], eax
mov edx, dword [esp + 0x70]
mov ecx, dword [esp + 0x6c]
inc eax
jmp 0x5f30c4
cmp ecx, edx
je 0x5f30f4
lea eax, [esp + 0x2c]
push ebx
push eax
call fcn.005f4b30
mov ecx, dword [esp + 0x6c]
mov ebx, dword [esi + 0x1c]
mov eax, dword [esi + 0x20]
cmp ebx, eax
mov dword [esp + 0x44], ebx
je 0x5f3248
add ebx, 0xa4
mov dword [esp + 0x30], ebx
mov eax, 0x71ec70
lea ecx, [ebx - 0x98]
mov dword [esp + 0x18], 0
mov dword [esp + 0x54], eax
mov dword [esp + 0x50], ecx
mov ebp, dword [eax]
xor edi, edi
test ebp, ebp
jle 0x5f3185
mov ebx, dword [esp + 0x50]
mov eax, dword [esp + 0x2c]
lea edx, [eax + eax*2]
lea ecx, [eax + edx*4]
shl ecx, 4
add ecx, eax
shl ecx, 8
sub ecx, eax
lea edx, [eax + ecx*4 + 0x269ec3]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x2c], edx
mov edx, edi
call fcn.005f8a50
mov ecx, eax
mov eax, dword [esp + 0x2c]
sar eax, 0x10
and eax, 0x7fff
add ebx, 4
cdq
idiv ecx
inc edi
cmp edi, ebp
mov dword [ebx - 4], edx
jl 0x5f3137
mov ebx, dword [esp + 0x30]
mov eax, dword [esp + 0x54]
mov ebp, dword [esp + 0x18]
mov edx, dword [esp + 0x50]
add eax, 4
inc ebp
add edx, 8
cmp eax, 0x71ecbc
mov dword [esp + 0x18], ebp
mov dword [esp + 0x54], eax
mov dword [esp + 0x50], edx
jl 0x5f312b
mov ebp, dword [esp + 0x44]
mov edi, 1
mov eax, dword [esp + 0x2c]
lea edx, [eax + eax*2]
lea ecx, [eax + edx*4]
shl ecx, 4
add ecx, eax
shl ecx, 8
sub ecx, eax
lea edx, [eax + ecx*4 + 0x269ec3]
mov ecx, edi
mov dword [esp + 0x2c], edx
call fcn.005f8a10
mov ecx, eax
mov eax, dword [esp + 0x2c]
sar eax, 0x10
and eax, 0x7fff
add ebp, 4
cdq
idiv ecx
inc edi
cmp edi, 4
mov dword [ebp - 4], edx
jl 0x5f31b0
mov edx, dword [esp + 0x2c]
mov eax, 0x1e278e7a
imul edx, edx, 0x560397f7
sub eax, edx
mov ecx, 3
mov dword [esp + 0x2c], eax
add ebx, 0x12c
sar eax, 0x10
and eax, 0x7fff
mov dword [esp + 0x30], ebx
cdq
idiv ecx
mov eax, dword [esp + 0x44]
add eax, 0x12c
mov dword [esp + 0x44], eax
mov dword [ebx - 0x12c], edx
mov dword [ebx - 0x128], edx
cmp eax, dword [esi + 0x20]
jne 0x5f3110
mov ecx, dword [esp + 0x6c]
mov eax, dword [esi]
mov dword [esp + 0x1c], 0
test eax, eax
mov dword [esp + 0x20], 0
mov dword [esp + 0x24], 0
jle 0x5f3c60
xor edi, edi
mov dword [esp + 0x1c], edi
mov eax, dword [esi + 0xc]
test eax, eax
je 0x5f3c4d
mov edx, dword [esi + 0x10]
sub edx, eax
mov eax, 0x2aaaaaab
imul edx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add edx, eax
cmp edi, edx
jae 0x5f3c4d
mov edx, dword [esi + 0xc]
lea eax, [edi + edi*2]
shl eax, 2
mov dword [esp + 0x78], eax
lea edi, [eax + edx + 4]
lea eax, [eax + edx + 8]
mov dword [esp + 0x54], edi
mov dword [esp + 0x30], eax
mov edi, dword [edi]
mov edx, dword [eax]
cmp edi, edx
mov dword [esp + 0x20], edi
jge 0x5f3c3d
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x20]
imul eax, dword [esi + 4]
mov edx, dword [esi + 0xc]
add eax, edi
mov edi, dword [esp + 0x78]
mov dword [esp + 0x14], 0
mov ebp, dword [edi + edx]
mov edi, dword [esi + 0x1c]
add eax, ebp
mov edx, eax
imul edx, edx, 0x12c
mov ecx, dword [ecx + eax*4]
add edx, edi
mov dword [esp + 0x50], edx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x10], 0
mov dl, byte [esp + 0x2b]
xor edi, edi
mov byte [esp + 0x34], dl
mov dword [esp + 0x38], edi
mov dword [esp + 0x3c], edi
mov dword [esp + 0x40], edi
mov ebx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x20]
mov eax, dword [esp + 0x18]
lea ecx, [esp + 0xb4]
push ecx
push 1
push edi
lea ecx, [esp + 0x40]
mov byte [esp + 0x140], 1
mov dword [esp + 0xc0], ebx
mov dword [esp + 0xc4], ebp
mov dword [esp + 0xc8], eax
mov byte [esp + 0xcc], 1
call fcn.005f4370
cmp dword [esp + 0x10], 4
jge 0x5f3417
mov eax, dword [esp + 0x24]
mov edx, ebp
lea ebp, [ebx - 1]
mov dword [esp + 0x44], ebx
cmp ebp, edi
jl 0x5f3417
mov edi, dword [esi + 0xc]
lea ecx, [ebp + ebp*2]
shl ecx, 2
cmp edx, dword [ecx + edi + 4]
jl 0x5f3417
cmp edx, dword [ecx + edi + 8]
jge 0x5f3417
imul eax, dword [esi + 4]
add eax, dword [ecx + edi]
mov edi, dword [esi + 0x1c]
add eax, edx
mov ecx, eax
imul eax, eax, 0x12c
add eax, edi
mov edi, dword [esp + 0x6c]
mov ecx, dword [edi + ecx*4]
mov edi, dword [eax + 0xa4]
mov eax, dword [eax + 0xa8]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x18]
cmp ecx, eax
jle 0x5f3417
lea eax, [edi + 2]
cmp dword [esp + 0x10], eax
jge 0x5f3417
mov eax, dword [esp + 0x10]
mov dword [esp + 0xfc], ecx
lea ecx, [esp + 0xf4]
cmp eax, edi
mov dword [esp + 0xf8], edx
mov edx, dword [esp + 0x3c]
push ecx
push 1
setl al
push edx
lea ecx, [esp + 0x40]
mov dword [esp + 0x100], ebp
mov byte [esp + 0x10c], al
call fcn.005f4370
mov eax, dword [esp + 0x10]
test eax, eax
jl 0x5f34e9
mov eax, dword [esi + 0xc]
mov edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x44], ebx
test eax, eax
lea ebp, [ebx + 1]
je 0x5f34e9
mov edx, dword [esi + 0x10]
sub edx, eax
mov eax, 0x2aaaaaab
imul edx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add edx, eax
cmp ebp, edx
jae 0x5f34e9
mov edx, dword [esi + 0xc]
lea eax, [ebp + ebp*2]
shl eax, 2
cmp edi, dword [eax + edx + 4]
jl 0x5f34e9
cmp edi, dword [eax + edx + 8]
jge 0x5f34e9
imul ecx, dword [esi + 4]
add ecx, dword [eax + edx]
mov edx, dword [esi + 0x1c]
add ecx, edi
mov eax, ecx
imul eax, eax, 0x12c
add eax, edx
mov edx, dword [esp + 0x6c]
mov ecx, dword [edx + ecx*4]
mov edx, dword [eax + 0xa4]
mov eax, dword [eax + 0xa8]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x18]
cmp ecx, eax
jle 0x5f34e9
mov eax, dword [esp + 0x10]
cmp eax, edx
jl 0x5f34e9
add edx, 2
mov dword [esp + 0xdc], ecx
lea ecx, [esp + 0xd4]
cmp eax, edx
mov edx, dword [esp + 0x3c]
push ecx
setge al
push 1
push edx
lea ecx, [esp + 0x40]
mov dword [esp + 0xe0], ebp
mov dword [esp + 0xe4], edi
mov byte [esp + 0xec], al
call fcn.005f4370
cmp dword [esp + 0x14], 4
jge 0x5f3595
mov edi, dword [esp + 0x20]
mov edx, dword [esp + 0x54]
mov eax, dword [esp + 0x24]
mov dword [esp + 0x48], edi
mov ebp, dword [edx]
dec edi
cmp edi, ebp
mov ecx, ebx
jl 0x5f3595
imul eax, dword [esi + 4]
mov edx, dword [esi + 0xc]
lea ebp, [ecx + ecx*2]
lea edx, [edx + ebp*4]
mov ebp, dword [edx]
add eax, ebp
mov ebp, dword [esi + 0x1c]
add eax, edi
mov edx, eax
imul eax, eax, 0x12c
add eax, ebp
mov ebp, dword [esp + 0x6c]
mov edx, dword [ebp + edx*4]
mov ebp, dword [eax + 0xa4]
mov eax, dword [eax + 0xa8]
mov dword [esp + 0x44], ebp
cmp edx, dword [esp + 0x18]
jle 0x5f3595
lea ebp, [eax + 2]
cmp dword [esp + 0x14], ebp
jge 0x5f3595
mov ebp, dword [esp + 0x14]
mov dword [esp + 0x94], ecx
mov ecx, dword [esp + 0x3c]
cmp ebp, eax
setl al
mov byte [esp + 0xa0], al
lea eax, [esp + 0x94]
push eax
push 1
push ecx
lea ecx, [esp + 0x40]
mov dword [esp + 0xa4], edi
mov dword [esp + 0xa8], edx
call fcn.005f4370
mov eax, dword [esp + 0x14]
test eax, eax
jl 0x5f3640
mov edi, dword [esp + 0x20]
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x24]
mov dword [esp + 0x48], edi
mov ebp, dword [edx]
inc edi
cmp edi, ebp
mov ecx, ebx
jge 0x5f3640
imul eax, dword [esi + 4]
mov edx, dword [esi + 0xc]
lea ebp, [ecx + ecx*2]
lea edx, [edx + ebp*4]
mov ebp, dword [edx]
add eax, ebp
mov ebp, dword [esi + 0x1c]
add eax, edi
mov edx, eax
imul eax, eax, 0x12c
add eax, ebp
mov ebp, dword [esp + 0x6c]
mov edx, dword [ebp + edx*4]
mov ebp, dword [eax + 0xa4]
mov eax, dword [eax + 0xa8]
mov dword [esp + 0x44], ebp
cmp edx, dword [esp + 0x18]
jle 0x5f3640
mov ebp, dword [esp + 0x14]
cmp ebp, eax
jl 0x5f3640
add eax, 2
mov dword [esp + 0xa4], ecx
mov ecx, dword [esp + 0x3c]
cmp ebp, eax
setge al
mov byte [esp + 0xb0], al
lea eax, [esp + 0xa4]
push eax
push 1
push ecx
lea ecx, [esp + 0x40]
mov dword [esp + 0xb4], edi
mov dword [esp + 0xb8], edx
call fcn.005f4370
cmp dword [esp + 0x10], 4
jge 0x5f3813
cmp dword [esp + 0x14], 4
jge 0x5f3731
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
lea ebp, [ebx - 1]
dec edx
test ebp, ebp
mov dword [esp + 0x44], ebx
jl 0x5f3731
mov edi, dword [esi + 0xc]
lea ecx, [ebp + ebp*2]
shl ecx, 2
cmp edx, dword [ecx + edi + 4]
jl 0x5f3731
cmp edx, dword [ecx + edi + 8]
jge 0x5f3731
imul eax, dword [esi + 4]
add eax, dword [ecx + edi]
mov edi, dword [esi + 0x1c]
add eax, edx
mov ecx, eax
imul eax, eax, 0x12c
add eax, edi
mov edi, dword [esp + 0x6c]
mov ecx, dword [edi + ecx*4]
mov edi, dword [eax + 0xa4]
mov eax, dword [eax + 0xa8]
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x18]
cmp ecx, eax
jle 0x5f3731
mov ebx, dword [esp + 0x10]
lea eax, [edi + 2]
cmp ebx, eax
jge 0x5f372d
mov eax, dword [esp + 0x90]
lea ebx, [eax + 2]
mov eax, dword [esp + 0x14]
cmp eax, ebx
jge 0x5f372d
cmp dword [esp + 0x10], edi
jge 0x5f36f7
cmp eax, dword [esp + 0x90]
jge 0x5f36f7
mov eax, 1
jmp 0x5f36f9
xor eax, eax
mov dword [esp + 0xcc], ecx
lea ecx, [esp + 0xc4]
mov dword [esp + 0xc8], edx
mov edx, dword [esp + 0x3c]
push ecx
push 1
push edx
lea ecx, [esp + 0x40]
mov dword [esp + 0xd0], ebp
mov byte [esp + 0xdc], al
call fcn.005f4370
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
test eax, eax
jl 0x5f3813
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
lea ebp, [ebx - 1]
inc edx
test ebp, ebp
mov dword [esp + 0x44], ebx
jl 0x5f3813
mov edi, dword [esi + 0xc]
lea ecx, [ebp + ebp*2]
shl ecx, 2
cmp edx, dword [ecx + edi + 4]
jl 0x5f3813
cmp edx, dword [ecx + edi + 8]
jge 0x5f3813
imul eax, dword [esi + 4]
add eax, dword [ecx + edi]
mov edi, dword [esi + 0x1c]
add eax, edx
mov ecx, eax
imul eax, eax, 0x12c
add eax, edi
mov edi, dword [esp + 0x6c]
mov ecx, dword [edi + ecx*4]
mov edi, dword [eax + 0xa4]
mov eax, dword [eax + 0xa8]
mov dword [esp + 0x128], eax
mov eax, dword [esp + 0x18]
cmp ecx, eax
jle 0x5f3813
mov ebx, dword [esp + 0x10]
lea eax, [edi + 2]
cmp ebx, eax
jge 0x5f380f
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x128]
cmp eax, ebx
jl 0x5f380f
cmp dword [esp + 0x10], edi
jge 0x5f37d9
add ebx, 2
cmp eax, ebx
jl 0x5f37d9
mov eax, 1
jmp 0x5f37db
xor eax, eax
mov dword [esp + 0xec], ecx
lea ecx, [esp + 0xe4]
mov dword [esp + 0xe8], edx
mov edx, dword [esp + 0x3c]
push ecx
push 1
push edx
lea ecx, [esp + 0x40]
mov dword [esp + 0xf0], ebp
mov byte [esp + 0xfc], al
call fcn.005f4370
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x10]
test eax, eax
jl 0x5f3a06
cmp dword [esp + 0x14], 4
jge 0x5f3914
mov edi, dword [esp + 0x20]
mov eax, dword [esi + 0xc]
mov ecx, dword [esp + 0x24]
dec edi
test eax, eax
mov dword [esp + 0x44], ebx
lea ebp, [ebx + 1]
je 0x5f3914
mov edx, dword [esi + 0x10]
sub edx, eax
mov eax, 0x2aaaaaab
imul edx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add edx, eax
cmp ebp, edx
jae 0x5f3914
mov edx, dword [esi + 0xc]
lea eax, [ebp + ebp*2]
shl eax, 2
cmp edi, dword [eax + edx + 4]
jl 0x5f3914
cmp edi, dword [eax + edx + 8]
jge 0x5f3914
imul ecx, dword [esi + 4]
mov ebx, dword [eax + edx]
add ecx, edi
add ecx, ebx
mov edx, dword [esi + 0x1c]
mov eax, ecx
mov ebx, dword [esp + 0x18]
imul eax, eax, 0x12c
add eax, edx
mov edx, dword [esp + 0x6c]
mov ecx, dword [edx + ecx*4]
mov edx, dword [eax + 0xa4]
mov eax, dword [eax + 0xa8]
cmp ecx, ebx
jle 0x5f3910
cmp dword [esp + 0x10], edx
jl 0x5f3910
lea ebx, [eax + 2]
cmp dword [esp + 0x14], ebx
jge 0x5f3910
mov ebx, dword [esp + 0x10]
add edx, 2
cmp ebx, edx
jl 0x5f38da
cmp dword [esp + 0x14], eax
jge 0x5f38da
mov eax, 1
jmp 0x5f38dc
xor eax, eax
mov byte [esp + 0x110], al
lea eax, [esp + 0x104]
mov dword [esp + 0x10c], ecx
mov ecx, dword [esp + 0x3c]
push eax
push 1
push ecx
lea ecx, [esp + 0x40]
mov dword [esp + 0x110], ebp
mov dword [esp + 0x114], edi
call fcn.005f4370
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
test eax, eax
jl 0x5f3a06
mov edi, dword [esp + 0x20]
mov eax, dword [esi + 0xc]
mov ecx, dword [esp + 0x24]
inc edi
test eax, eax
mov dword [esp + 0x44], ebx
lea ebp, [ebx + 1]
je 0x5f3a06
mov edx, dword [esi + 0x10]
sub edx, eax
mov eax, 0x2aaaaaab
imul edx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add edx, eax
cmp ebp, edx
jae 0x5f3a06
mov edx, dword [esi + 0xc]
lea eax, [ebp + ebp*2]
shl eax, 2
cmp edi, dword [eax + edx + 4]
jl 0x5f3a06
cmp edi, dword [eax + edx + 8]
jge 0x5f3a06
imul ecx, dword [esi + 4]
mov ebx, dword [eax + edx]
mov edx, dword [esi + 0x1c]
add ecx, ebx
mov ebx, dword [esp + 0x18]
add ecx, edi
mov eax, ecx
imul eax, eax, 0x12c
add eax, edx
mov edx, dword [esp + 0x6c]
mov ecx, dword [edx + ecx*4]
mov edx, dword [eax + 0xa4]
mov eax, dword [eax + 0xa8]
cmp ecx, ebx
jle 0x5f3a06
mov ebx, dword [esp + 0x10]
cmp ebx, edx
jl 0x5f3a06
cmp dword [esp + 0x14], eax
jl 0x5f3a06
add edx, 2
cmp ebx, edx
jl 0x5f39d0
mov edx, dword [esp + 0x14]
add eax, 2
cmp edx, eax
jl 0x5f39d0
mov eax, 1
jmp 0x5f39d2
xor eax, eax
mov byte [esp + 0x120], al
lea eax, [esp + 0x114]
mov dword [esp + 0x11c], ecx
mov ecx, dword [esp + 0x3c]
push eax
push 1
push ecx
lea ecx, [esp + 0x40]
mov dword [esp + 0x120], ebp
mov dword [esp + 0x124], edi
call fcn.005f4370
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x38]
mov eax, edx
mov ebx, edx
sub eax, ecx
push 0
and al, 0xf0
mov dword [esp + 0x48], ebx
cmp eax, 0x100
mov eax, dword [esp + 0x34]
mov ebp, ecx
push eax
jg 0x5f3a34
call fcn.005f4f20
jmp 0x5f3acc
call fcn.005f4d60
mov ecx, dword [esp + 0x30]
lea edi, [ebp + 0x100]
push 0
push ecx
mov edx, edi
mov ecx, ebp
call fcn.005f4f20
mov ecx, edi
cmp ecx, ebx
je 0x5f3acc
mov edx, ecx
mov ebp, dword [ecx - 8]
mov eax, dword [edx]
mov dword [esp + 0x7c], eax
mov eax, dword [edx + 4]
mov dword [esp + 0x80], eax
mov eax, ecx
mov edi, dword [edx + 8]
cmp edi, ebp
mov edx, dword [edx + 0xc]
mov dword [esp + 0x88], edx
lea edx, [ecx - 0x10]
jle 0x5f3aa8
mov ebx, edx
mov ebp, dword [ebx]
mov dword [eax], ebp
mov ebp, dword [ebx + 4]
mov dword [eax + 4], ebp
mov ebp, dword [ebx + 8]
mov dword [eax + 8], ebp
mov ebx, dword [ebx + 0xc]
mov dword [eax + 0xc], ebx
mov ebx, dword [edx - 8]
mov eax, edx
sub edx, 0x10
cmp edi, ebx
jg 0x5f3a80
mov ebx, dword [esp + 0x44]
mov edx, dword [esp + 0x7c]
add ecx, 0x10
mov dword [eax], edx
mov edx, dword [esp + 0x80]
mov dword [eax + 4], edx
mov edx, dword [esp + 0x88]
mov dword [eax + 8], edi
cmp ecx, ebx
mov dword [eax + 0xc], edx
jne 0x5f3a55
mov eax, dword [esp + 0x38]
mov edi, eax
mov cl, byte [edi + 0xc]
test cl, cl
jne 0x5f3ade
add edi, 0x10
jmp 0x5f3ad2
mov cl, byte [esp + 0x2b]
add edi, 0x10
mov byte [esp + 0x58], cl
xor ecx, ecx
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x60], ecx
mov dword [esp + 0x64], ecx
mov ebp, edi
mov byte [esp + 0x134], 2
sub ebp, eax
sar ebp, 4
je 0x5f3b8c
cmp ebp, ecx
mov eax, ebp
jge 0x5f3b14
xor eax, eax
lea edx, [eax*8]
push edx
call fcn.00652710
mov edx, dword [esp + 0x64]
mov ebx, eax
mov eax, dword [esp + 0x60]
add esp, 4
cmp eax, edx
mov ecx, ebx
mov dword [esp + 0x44], edx
je 0x5f3b54
test ecx, ecx
je 0x5f3b46
mov edx, dword [eax]
mov dword [ecx], edx
mov edx, dword [eax + 4]
mov dword [ecx + 4], edx
mov edx, dword [esp + 0x44]
add eax, 8
add ecx, 8
cmp eax, edx
jne 0x5f3b38
mov eax, dword [esp + 0x5c]
push eax
call fcn.00652870
lea ecx, [ebx + ebp*8]
add esp, 4
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x5c]
test ecx, ecx
jne 0x5f3b74
xor eax, eax
jmp 0x5f3b7d
mov eax, dword [esp + 0x60]
sub eax, ecx
sar eax, 3
lea edx, [ebx + eax*8]
mov eax, dword [esp + 0x38]
mov dword [esp + 0x60], edx
mov dword [esp + 0x5c], ebx
cmp edi, eax
je 0x5f3baa
mov eax, dword [esp + 0x60]
sub edi, 0x10
push edi
push 1
push eax
lea ecx, [esp + 0x64]
call fcn.005df630
cmp edi, dword [esp + 0x38]
jne 0x5f3b90
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x50]
lea edx, [edi + ecx*4]
lea ecx, [eax + edx*8 + 0xac]
lea edx, [esp + 0x58]
push edx
call fcn.005f3e60
mov eax, dword [esp + 0x5c]
push eax
call fcn.00652870
mov ecx, dword [esp + 0x3c]
xor ebx, ebx
push ecx
mov dword [esp + 0x64], ebx
mov dword [esp + 0x68], ebx
mov dword [esp + 0x6c], ebx
mov byte [esp + 0x13c], bl
call fcn.00652870
add esp, 8
inc edi
cmp edi, 4
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x40], ebx
mov dword [esp + 0x10], edi
jl 0x5f3307
mov eax, dword [esp + 0x14]
inc eax
cmp eax, 4
mov dword [esp + 0x14], eax
jl 0x5f32ff
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x20]
inc eax
mov ecx, dword [edx]
mov dword [esp + 0x20], eax
cmp eax, ecx
mov ecx, dword [esp + 0x6c]
jl 0x5f32c5
mov eax, dword [esp + 0x1c]
inc eax
mov dword [esp + 0x1c], eax
mov edi, eax
jmp 0x5f3270
mov eax, dword [esp + 0x24]
mov edx, dword [esi]
inc eax
cmp eax, edx
mov dword [esp + 0x24], eax
jl 0x5f326a
push ecx
call fcn.00652870
mov ecx, dword [esp + 0x130]
add esp, 4
mov dword fs:[0], ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x128
ret 4