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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov edx, dword [ebp + 0x14]
sub esp, 0x94
push ebx
push esi
push edi
cmp edx, 0xa
jae 0x5e01e3
mov eax, 0xffffffec
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp + 0x18]
mov esi, dword [ebp + 8]
mov eax, dword [ebp + 0xc]
add eax, esi
mov dword [esp + 0x3c], eax
lea eax, [ecx + 4]
mov dword [esp + 0x18], eax
mov eax, dword [ebp + 0x10]
movzx ebx, word [eax + 2]
movzx edi, word [eax]
mov dword [esp + 0x10], ebx
movzx ebx, word [eax + 4]
add eax, 6
mov dword [esp + 0x94], eax
sub edx, ebx
sub edx, dword [esp + 0x10]
add eax, edi
mov dword [esp + 0x9c], eax
sub edx, edi
add eax, dword [esp + 0x10]
sub edx, 6
mov dword [esp + 0x98], eax
mov eax, dword [ebp + 0xc]
add eax, 3
mov dword [esp + 0x14], ebx
shr eax, 2
mov dword [esp + 0x34], edi
mov dword [esp + 0x30], edx
lea ebx, [eax + esi]
lea edi, [ebx + eax]
mov dword [esp + 0x24], ebx
add eax, edi
mov dword [esp + 0x28], edi
mov edi, ebx
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x90], eax
mov dword [esp + 0x1c], eax
movzx eax, byte [ecx + 2]
mov dword [esp + 0x2c], edi
mov dword [esp + 0x38], ebx
mov dword [esp + 0x20], eax
cmp edx, dword [ebp + 0x14]
ja 0x5e01d7
mov ecx, dword [esp + 0x90]
cmp ecx, dword [esp + 0x3c]
ja 0x5e01d7
cmp dword [ebp + 0xc], 6
jb 0x5e01d7
push dword [esp + 0x34]
mov edx, dword [esp + 0x98]
lea ecx, [esp + 0x44]
call fcn.005de460
add esp, 4
cmp eax, 0xffffff88
ja 0x5e1165
push dword [esp + 0x10]
mov edx, dword [esp + 0xa0]
lea ecx, [esp + 0x6c]
call fcn.005de460
add esp, 4
cmp eax, 0xffffff88
ja 0x5e1165
push dword [esp + 0x14]
mov edx, dword [esp + 0x9c]
lea ecx, [esp + 0x80]
call fcn.005de460
add esp, 4
cmp eax, 0xffffff88
ja 0x5e1165
push dword [esp + 0x30]
add edx, dword [esp + 0x18]
lea ecx, [esp + 0x58]
call fcn.005de460
add esp, 4
cmp eax, 0xffffff88
ja 0x5e1165
mov ecx, dword [esp + 0x3c]
mov eax, ecx
mov edx, dword [esp + 0x90]
sub eax, edx
cmp eax, 4
jb 0x5e05a1
lea eax, [ecx - 3]
cmp edx, eax
sbb eax, eax
neg eax
test al, 1
je 0x5e05a1
mov eax, dword [esp + 0x20]
neg eax
and eax, 0x1f
mov dword [esp + 0x14], eax
mov ebx, dword [esp + 0x44]
mov ecx, ebx
mov edx, dword [esp + 0x40]
and ecx, 0x1f
shl edx, cl
mov ecx, eax
shr edx, cl
mov ecx, dword [esp + 0x18]
movzx eax, word [ecx + edx*4]
mov word [esi], ax
movzx eax, byte [ecx + edx*4 + 2]
add ebx, eax
movzx eax, byte [ecx + edx*4 + 3]
mov edx, dword [esp + 0x68]
add esi, eax
mov dword [esp + 0x94], ebx
mov ebx, dword [esp + 0x6c]
mov ecx, ebx
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x14]
shr edx, cl
mov ecx, dword [esp + 0x18]
movzx eax, word [ecx + edx*4]
mov word [edi], ax
movzx eax, byte [ecx + edx*4 + 2]
add ebx, eax
movzx eax, byte [ecx + edx*4 + 3]
add edi, eax
mov dword [esp + 0x34], ebx
mov ebx, dword [esp + 0x7c]
mov edx, ebx
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x80]
mov ecx, edi
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x14]
shr edx, cl
mov ecx, dword [esp + 0x18]
movzx eax, word [ecx + edx*4]
mov ecx, dword [esp + 0x38]
mov word [ecx], ax
mov eax, dword [esp + 0x18]
movzx eax, byte [eax + edx*4 + 2]
add edi, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x30], edi
mov edi, dword [esp + 0x54]
movzx eax, byte [eax + edx*4 + 3]
mov edx, edi
add ecx, eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0x38], ecx
mov ecx, eax
and ecx, 0x1f
mov dword [esp + 0x10], eax
shl edx, cl
mov ecx, dword [esp + 0x14]
shr edx, cl
mov ecx, dword [esp + 0x18]
movzx eax, word [ecx + edx*4]
mov ecx, dword [esp + 0x1c]
mov word [ecx], ax
mov ecx, dword [esp + 0x18]
movzx eax, byte [ecx + edx*4 + 2]
add dword [esp + 0x10], eax
movzx eax, byte [ecx + edx*4 + 3]
mov ecx, dword [esp + 0x94]
mov edx, dword [esp + 0x40]
and ecx, 0x1f
add dword [esp + 0x1c], eax
shl edx, cl
mov ecx, dword [esp + 0x14]
shr edx, cl
mov ecx, dword [esp + 0x18]
movzx eax, word [ecx + edx*4]
mov word [esi], ax
movzx eax, byte [ecx + edx*4 + 2]
mov ecx, dword [esp + 0x94]
add ecx, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x34]
and ecx, 0x1f
movzx eax, byte [eax + edx*4 + 3]
mov edx, dword [esp + 0x68]
add esi, eax
mov eax, dword [esp + 0x18]
shl edx, cl
mov ecx, dword [esp + 0x14]
shr edx, cl
mov ecx, dword [esp + 0x2c]
movzx eax, word [eax + edx*4]
mov word [ecx], ax
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x34]
movzx eax, byte [eax + edx*4 + 2]
add ecx, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x6c], ecx
movzx eax, byte [eax + edx*4 + 3]
add dword [esp + 0x2c], eax
mov edx, dword [esp + 0x30]
mov ecx, edx
mov eax, dword [esp + 0x18]
and ecx, 0x1f
shl ebx, cl
mov ecx, dword [esp + 0x14]
shr ebx, cl
mov ecx, dword [esp + 0x38]
movzx eax, word [eax + ebx*4]
mov word [ecx], ax
mov eax, dword [esp + 0x18]
movzx eax, byte [eax + ebx*4 + 2]
add edx, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x80], edx
mov edx, dword [esp + 0x10]
movzx eax, byte [eax + ebx*4 + 3]
mov ebx, dword [esp + 0x1c]
add ecx, eax
mov dword [esp + 0x38], ecx
mov ecx, edx
and ecx, 0x1f
shl edi, cl
mov ecx, dword [esp + 0x14]
shr edi, cl
mov ecx, dword [esp + 0x18]
movzx eax, word [ecx + edi*4]
mov word [ebx], ax
movzx eax, byte [ecx + edi*4 + 2]
add edx, eax
movzx eax, byte [ecx + edi*4 + 3]
add ebx, eax
mov dword [esp + 0x58], edx
lea ecx, [esp + 0x54]
mov dword [esp + 0x1c], ebx
call fcn.005de590
neg eax
lea ecx, [esp + 0x7c]
sbb edi, edi
inc edi
call fcn.005de590
neg eax
lea ecx, [esp + 0x68]
sbb eax, eax
inc eax
and edi, eax
call fcn.005de590
neg eax
lea ecx, [esp + 0x40]
sbb eax, eax
inc eax
and edi, eax
call fcn.005de590
neg eax
sbb eax, eax
inc eax
and edi, eax
mov eax, dword [esp + 0x3c]
add eax, 0xfffffffd
cmp ebx, eax
sbb eax, eax
neg eax
test eax, edi
mov edi, dword [esp + 0x2c]
mov eax, dword [esp + 0x14]
jne 0x5e0354
mov ebx, dword [esp + 0x38]
mov edx, dword [esp + 0x90]
mov ecx, dword [esp + 0x24]
cmp esi, ecx
ja 0x5e01d7
cmp edi, dword [esp + 0x28]
ja 0x5e01d7
cmp ebx, edx
ja 0x5e01d7
mov eax, ecx
sub eax, esi
cmp eax, 4
jb 0x5e06bc
mov ebx, dword [esp + 0x44]
lea edx, [ecx - 3]
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x40]
mov dword [esp + 0x14], edx
nop
cmp ebx, 0x20
jbe 0x5e05ec
mov edi, 3
jmp 0x5e0649
mov ecx, dword [esp + 0x48]
cmp ecx, dword [esp + 0x50]
jb 0x5e0604
mov eax, ebx
and ebx, 7
shr eax, 3
sub ecx, eax
xor edi, edi
jmp 0x5e0637
cmp ecx, dword [esp + 0x4c]
jne 0x5e0614
cmp ebx, 0x20
sbb edi, edi
add edi, 2
jmp 0x5e0649
mov edx, ebx
mov eax, ecx
shr edx, 3
xor edi, edi
sub eax, edx
cmp eax, dword [esp + 0x4c]
jae 0x5e0630
mov edx, ecx
mov edi, 1
sub edx, dword [esp + 0x4c]
imul eax, edx, 0xfffffff8
sub ecx, edx
add ebx, eax
mov edx, dword [ecx]
mov dword [esp + 0x40], edx
mov dword [esp + 0x14], edx
mov dword [esp + 0x44], ebx
mov dword [esp + 0x48], ecx
cmp esi, dword [esp + 0x30]
sbb ecx, ecx
xor eax, eax
neg ecx
test edi, edi
sete al
test eax, ecx
je 0x5e06d1
mov edi, dword [esp + 0x20]
mov ecx, ebx
and ecx, 0x1f
neg edi
shl edx, cl
and edi, 0x1f
mov ecx, edi
shr edx, cl
mov ecx, dword [esp + 0x18]
movzx eax, word [ecx + edx*4]
mov word [esi], ax
movzx eax, byte [ecx + edx*4 + 2]
add ebx, eax
movzx eax, byte [ecx + edx*4 + 3]
mov edx, dword [esp + 0x14]
add esi, eax
mov ecx, ebx
mov eax, edx
and ecx, 0x1f
shl eax, cl
mov ecx, edi
shr eax, cl
mov ecx, dword [esp + 0x18]
lea ecx, [ecx + eax*4]
movzx eax, word [ecx]
mov word [esi], ax
movzx eax, byte [ecx + 2]
add ebx, eax
movzx eax, byte [ecx + 3]
mov dword [esp + 0x44], ebx
add esi, eax
jmp 0x5e05e0
lea ecx, [esp + 0x40]
call fcn.005de5d0
mov edx, dword [esp + 0x40]
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0x24]
sub eax, esi
cmp eax, 2
jb 0x5e07fb
mov edi, dword [esp + 0x18]
cmp ebx, 0x20
jbe 0x5e06f3
mov dword [esp + 0x10], 3
jmp 0x5e0763
mov ecx, dword [esp + 0x48]
cmp ecx, dword [esp + 0x50]
jb 0x5e0711
mov eax, ebx
mov dword [esp + 0x10], 0
shr eax, 3
sub ecx, eax
and ebx, 7
jmp 0x5e0751
cmp ecx, dword [esp + 0x4c]
jne 0x5e0725
cmp ebx, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
jmp 0x5e0763
mov edx, ebx
mov dword [esp + 0x10], 0
shr edx, 3
mov eax, ecx
sub eax, edx
cmp eax, dword [esp + 0x4c]
jae 0x5e074a
mov edx, ecx
mov dword [esp + 0x10], 1
sub edx, dword [esp + 0x4c]
imul eax, edx, 0xfffffff8
sub ecx, edx
add ebx, eax
mov edx, dword [ecx]
mov dword [esp + 0x40], edx
mov dword [esp + 0x14], edx
mov dword [esp + 0x44], ebx
mov dword [esp + 0x48], ecx
mov eax, dword [esp + 0x24]
add eax, 0xfffffffe
cmp eax, esi
sbb ecx, ecx
xor eax, eax
inc ecx
cmp dword [esp + 0x10], eax
sete al
test eax, ecx
je 0x5e07b0
mov ecx, ebx
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x20]
neg ecx
and ecx, 0x1f
shr edx, cl
mov ax, word [edi + edx*4]
mov word [esi], ax
movzx eax, byte [edi + edx*4 + 2]
add ebx, eax
movzx eax, byte [edi + edx*4 + 3]
mov edx, dword [esp + 0x14]
add esi, eax
mov dword [esp + 0x44], ebx
jmp 0x5e06e4
mov eax, dword [esp + 0x24]
add eax, 0xfffffffe
cmp esi, eax
ja 0x5e07fb
mov eax, dword [esp + 0x20]
neg eax
and eax, 0x1f
mov dword [esp + 0x30], eax
mov ecx, ebx
mov eax, edx
and ecx, 0x1f
shl eax, cl
mov ecx, dword [esp + 0x30]
shr eax, cl
lea ecx, [edi + eax*4]
mov ax, word [ecx]
mov word [esi], ax
movzx eax, byte [ecx + 2]
add ebx, eax
movzx eax, byte [ecx + 3]
add esi, eax
mov eax, dword [esp + 0x24]
add eax, 0xfffffffe
cmp esi, eax
jbe 0x5e07c8
mov dword [esp + 0x44], ebx
mov edi, 0x20
cmp esi, dword [esp + 0x24]
jae 0x5e0844
mov eax, dword [esp + 0x18]
mov ecx, ebx
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x20]
neg ecx
and ecx, 0x1f
shr edx, cl
lea ecx, [eax + edx*4]
mov al, byte [ecx]
mov byte [esi], al
cmp byte [ecx + 3], 1
jne 0x5e0831
movzx eax, byte [ecx + 2]
add ebx, eax
jmp 0x5e0840
cmp ebx, edi
jae 0x5e0844
movzx eax, byte [ecx + 2]
add ebx, eax
cmp ebx, edi
cmova ebx, edi
mov dword [esp + 0x44], ebx
mov ecx, dword [esp + 0x28]
mov eax, ecx
mov edx, dword [esp + 0x2c]
sub eax, edx
cmp eax, 4
jb 0x5e0982
mov eax, dword [esp + 0x68]
mov ebx, dword [esp + 0x70]
mov edi, dword [esp + 0x6c]
mov dword [esp + 0x14], eax
lea esp, [esp]
cmp edi, 0x20
jbe 0x5e087c
mov esi, 3
jmp 0x5e08f4
cmp ebx, dword [esp + 0x78]
jb 0x5e089a
mov eax, edi
and edi, 7
shr eax, 3
sub ebx, eax
mov esi, dword [ebx]
mov dword [esp + 0x14], esi
mov dword [esp + 0x68], esi
xor esi, esi
jmp 0x5e08ec
mov esi, dword [esp + 0x74]
cmp ebx, esi
jne 0x5e08b2
cmp edi, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
mov esi, eax
jmp 0x5e08f4
mov ecx, edi
mov dword [esp + 0x10], 0
shr ecx, 3
mov eax, ebx
sub eax, ecx
cmp eax, esi
jae 0x5e08d3
mov ecx, ebx
mov dword [esp + 0x10], 1
sub ecx, esi
sub ebx, ecx
imul eax, ecx, 0xfffffff8
mov ecx, dword [esp + 0x28]
mov esi, dword [ebx]
mov dword [esp + 0x14], esi
add edi, eax
mov dword [esp + 0x68], esi
mov esi, dword [esp + 0x10]
mov dword [esp + 0x6c], edi
mov dword [esp + 0x70], ebx
lea eax, [ecx - 3]
cmp edx, eax
sbb ecx, ecx
xor eax, eax
neg ecx
test esi, esi
sete al
test eax, ecx
je 0x5e09a1
mov esi, dword [esp + 0x20]
mov ecx, edi
mov edx, dword [esp + 0x14]
and ecx, 0x1f
mov eax, dword [esp + 0x18]
neg esi
shl edx, cl
and esi, 0x1f
mov ecx, esi
shr edx, cl
mov ecx, dword [esp + 0x2c]
movzx eax, word [eax + edx*4]
mov word [ecx], ax
mov ecx, dword [esp + 0x18]
movzx eax, byte [ecx + edx*4 + 2]
add edi, eax
movzx eax, byte [ecx + edx*4 + 3]
mov edx, dword [esp + 0x2c]
mov ecx, edi
add edx, eax
and ecx, 0x1f
mov eax, dword [esp + 0x14]
shl eax, cl
mov ecx, esi
shr eax, cl
mov ecx, dword [esp + 0x18]
lea ecx, [ecx + eax*4]
movzx eax, word [ecx]
mov word [edx], ax
movzx eax, byte [ecx + 2]
add edi, eax
movzx eax, byte [ecx + 3]
mov ecx, dword [esp + 0x28]
add edx, eax
mov dword [esp + 0x6c], edi
mov dword [esp + 0x2c], edx
jmp 0x5e0870
lea ecx, [esp + 0x68]
call fcn.005de5d0
mov esi, dword [esp + 0x68]
mov ebx, dword [esp + 0x70]
mov edi, dword [esp + 0x6c]
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x14], esi
jmp 0x5e09a5
mov esi, dword [esp + 0x14]
mov ecx, dword [esp + 0x28]
mov eax, ecx
sub eax, edx
cmp eax, 2
jb 0x5e0ad7
mov esi, dword [esp + 0x18]
add ecx, 0xfffffffe
mov dword [esp + 0x24], ecx
cmp edi, 0x20
jbe 0x5e09d0
mov dword [esp + 0x10], 3
jmp 0x5e0a40
cmp ebx, dword [esp + 0x78]
jb 0x5e09ea
mov eax, edi
mov dword [esp + 0x10], 0
shr eax, 3
sub ebx, eax
and edi, 7
jmp 0x5e0a2e
cmp ebx, dword [esp + 0x74]
jne 0x5e09fe
cmp edi, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
jmp 0x5e0a40
mov ecx, edi
mov dword [esp + 0x10], 0
shr ecx, 3
mov eax, ebx
sub eax, ecx
cmp eax, dword [esp + 0x74]
jae 0x5e0a23
mov ecx, ebx
mov dword [esp + 0x10], 1
sub ecx, dword [esp + 0x74]
imul eax, ecx, 0xfffffff8
sub ebx, ecx
mov ecx, dword [esp + 0x24]
add edi, eax
mov eax, dword [ebx]
mov dword [esp + 0x68], eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x6c], edi
mov dword [esp + 0x70], ebx
cmp ecx, edx
sbb ecx, ecx
xor eax, eax
inc ecx
cmp dword [esp + 0x10], eax
sete al
test eax, ecx
je 0x5e0a94
mov edx, dword [esp + 0x14]
mov ecx, edi
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x20]
neg ecx
and ecx, 0x1f
shr edx, cl
mov ecx, dword [esp + 0x2c]
mov ax, word [esi + edx*4]
mov word [ecx], ax
movzx eax, byte [esi + edx*4 + 2]
add edi, eax
movzx eax, byte [esi + edx*4 + 3]
mov edx, ecx
mov dword [esp + 0x6c], edi
mov ecx, dword [esp + 0x24]
add edx, eax
mov dword [esp + 0x2c], edx
jmp 0x5e09c1
cmp edx, dword [esp + 0x24]
ja 0x5e0ad3
mov eax, dword [esp + 0x20]
neg eax
and eax, 0x1f
mov ebx, eax
mov eax, dword [esp + 0x14]
mov ecx, edi
and ecx, 0x1f
shl eax, cl
mov ecx, ebx
shr eax, cl
lea ecx, [esi + eax*4]
mov ax, word [ecx]
mov word [edx], ax
movzx eax, byte [ecx + 2]
add edi, eax
movzx eax, byte [ecx + 3]
add edx, eax
cmp edx, dword [esp + 0x24]
jbe 0x5e0aa5
mov dword [esp + 0x6c], edi
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x20]
cmp edx, dword [esp + 0x28]
jae 0x5e0b24
mov eax, dword [esp + 0x18]
mov ecx, edi
and ecx, 0x1f
shl esi, cl
mov ecx, ebx
neg ecx
and ecx, 0x1f
shr esi, cl
lea ecx, [eax + esi*4]
mov al, byte [ecx]
mov byte [edx], al
cmp byte [ecx + 3], 1
jne 0x5e0b0a
movzx eax, byte [ecx + 2]
add edi, eax
jmp 0x5e0b20
cmp edi, 0x20
jae 0x5e0b24
movzx eax, byte [ecx + 2]
add edi, eax
mov eax, 0x20
cmp edi, 0x20
cmova edi, eax
mov dword [esp + 0x6c], edi
mov ecx, dword [esp + 0x90]
mov eax, ecx
mov esi, dword [esp + 0x38]
sub eax, esi
cmp eax, 4
jb 0x5e0c84
mov edx, dword [esp + 0x7c]
add ecx, 0xfffffffd
mov ebx, dword [esp + 0x84]
mov edi, dword [esp + 0x80]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x14], edx
lea esp, [esp]
cmp edi, 0x20
jbe 0x5e0b6f
mov dword [esp + 0x10], 3
jmp 0x5e0bee
cmp ebx, dword [esp + 0x8c]
jb 0x5e0b8c
mov eax, edi
mov dword [esp + 0x10], 0
shr eax, 3
sub ebx, eax
and edi, 7
jmp 0x5e0bd6
cmp ebx, dword [esp + 0x88]
jne 0x5e0ba3
cmp edi, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
jmp 0x5e0bee
mov edx, dword [esp + 0x88]
mov ecx, edi
shr ecx, 3
mov eax, ebx
sub eax, ecx
mov dword [esp + 0x10], 0
cmp eax, edx
jae 0x5e0bcb
mov ecx, ebx
mov dword [esp + 0x10], 1
sub ecx, edx
imul eax, ecx, 0xfffffff8
sub ebx, ecx
mov ecx, dword [esp + 0x34]
add edi, eax
mov edx, dword [ebx]
mov dword [esp + 0x7c], edx
mov dword [esp + 0x14], edx
mov dword [esp + 0x80], edi
mov dword [esp + 0x84], ebx
cmp esi, ecx
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x10], eax
sete al
test eax, ecx
je 0x5e0ca3
mov esi, dword [esp + 0x20]
mov ecx, edi
mov eax, dword [esp + 0x18]
and ecx, 0x1f
shl edx, cl
neg esi
and esi, 0x1f
mov ecx, esi
shr edx, cl
mov ecx, dword [esp + 0x38]
movzx eax, word [eax + edx*4]
mov word [ecx], ax
mov eax, dword [esp + 0x18]
movzx eax, byte [eax + edx*4 + 2]
add edi, eax
mov eax, dword [esp + 0x18]
movzx eax, byte [eax + edx*4 + 3]
mov edx, dword [esp + 0x14]
add ecx, eax
mov dword [esp + 0x38], ecx
mov eax, edx
mov ecx, edi
and ecx, 0x1f
shl eax, cl
mov ecx, esi
mov esi, dword [esp + 0x38]
shr eax, cl
mov ecx, dword [esp + 0x18]
lea ecx, [ecx + eax*4]
movzx eax, word [ecx]
mov word [esi], ax
movzx eax, byte [ecx + 2]
add edi, eax
movzx eax, byte [ecx + 3]
mov ecx, dword [esp + 0x34]
add esi, eax
mov dword [esp + 0x80], edi
mov dword [esp + 0x38], esi
jmp 0x5e0b60
lea ecx, [esp + 0x7c]
call fcn.005de5d0
mov edx, dword [esp + 0x7c]
mov ebx, dword [esp + 0x84]
mov edi, dword [esp + 0x80]
mov dword [esp + 0x14], edx
mov ecx, dword [esp + 0x90]
mov eax, ecx
sub eax, esi
cmp eax, 2
jb 0x5e0df3
add ecx, 0xfffffffe
mov dword [esp + 0x24], ecx
mov edi, edi
cmp edi, 0x20
jbe 0x5e0ccf
mov dword [esp + 0x10], 3
jmp 0x5e0d4e
cmp ebx, dword [esp + 0x8c]
jb 0x5e0cec
mov eax, edi
mov dword [esp + 0x10], 0
shr eax, 3
sub ebx, eax
and edi, 7
jmp 0x5e0d36
cmp ebx, dword [esp + 0x88]
jne 0x5e0d03
cmp edi, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
jmp 0x5e0d4e
mov edx, dword [esp + 0x88]
mov ecx, edi
shr ecx, 3
mov eax, ebx
sub eax, ecx
mov dword [esp + 0x10], 0
cmp eax, edx
jae 0x5e0d2b
mov ecx, ebx
mov dword [esp + 0x10], 1
sub ecx, edx
imul eax, ecx, 0xfffffff8
sub ebx, ecx
mov ecx, dword [esp + 0x24]
add edi, eax
mov edx, dword [ebx]
mov dword [esp + 0x7c], edx
mov dword [esp + 0x14], edx
mov dword [esp + 0x80], edi
mov dword [esp + 0x84], ebx
cmp ecx, esi
sbb ecx, ecx
xor eax, eax
inc ecx
cmp dword [esp + 0x10], eax
sete al
test eax, ecx
je 0x5e0d9f
mov ecx, edi
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x20]
neg ecx
and ecx, 0x1f
shr edx, cl
mov ecx, dword [esp + 0x18]
mov ax, word [ecx + edx*4]
mov word [esi], ax
movzx eax, byte [ecx + edx*4 + 2]
add edi, eax
movzx eax, byte [ecx + edx*4 + 3]
mov edx, dword [esp + 0x14]
add esi, eax
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x80], edi
jmp 0x5e0cc0
mov edx, dword [esp + 0x18]
mov ebx, dword [esp + 0x14]
cmp esi, dword [esp + 0x24]
ja 0x5e0dfb
mov eax, dword [esp + 0x20]
neg eax
and eax, 0x1f
mov dword [esp + 0x30], eax
lea ebx, [ebx]
mov ecx, edi
mov eax, ebx
and ecx, 0x1f
shl eax, cl
mov ecx, dword [esp + 0x30]
shr eax, cl
lea ecx, [edx + eax*4]
mov ax, word [ecx]
mov word [esi], ax
movzx eax, byte [ecx + 2]
add edi, eax
movzx eax, byte [ecx + 3]
add esi, eax
cmp esi, dword [esp + 0x24]
jbe 0x5e0dc0
mov dword [esp + 0x80], edi
jmp 0x5e0dfb
mov edx, dword [esp + 0x18]
mov ebx, dword [esp + 0x14]
cmp esi, dword [esp + 0x90]
jae 0x5e0e49
mov ecx, edi
and ecx, 0x1f
shl ebx, cl
mov ecx, dword [esp + 0x20]
neg ecx
and ecx, 0x1f
shr ebx, cl
mov al, byte [edx + ebx*4]
mov byte [esi], al
cmp byte [edx + ebx*4 + 3], 1
jne 0x5e0e2b
movzx eax, byte [edx + ebx*4 + 2]
add edi, eax
jmp 0x5e0e42
cmp edi, 0x20
jae 0x5e0e49
movzx eax, byte [edx + ebx*4 + 2]
add edi, eax
mov eax, 0x20
cmp edi, 0x20
cmova edi, eax
mov dword [esp + 0x80], edi
mov ecx, dword [esp + 0x3c]
mov eax, ecx
mov esi, dword [esp + 0x1c]
sub eax, esi
cmp eax, 4
jb 0x5e0f81
mov edx, dword [esp + 0x54]
add ecx, 0xfffffffd
mov ebx, dword [esp + 0x5c]
mov edi, dword [esp + 0x58]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x28], edx
cmp edi, 0x20
jbe 0x5e0e84
mov dword [esp + 0x10], 3
jmp 0x5e0ef4
cmp ebx, dword [esp + 0x64]
jb 0x5e0e9e
mov eax, edi
mov dword [esp + 0x10], 0
shr eax, 3
sub ebx, eax
and edi, 7
jmp 0x5e0ee2
cmp ebx, dword [esp + 0x60]
jne 0x5e0eb2
cmp edi, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
jmp 0x5e0ef4
mov edx, dword [esp + 0x60]
mov ecx, edi
shr ecx, 3
mov eax, ebx
sub eax, ecx
mov dword [esp + 0x10], 0
cmp eax, edx
jae 0x5e0ed7
mov ecx, ebx
mov dword [esp + 0x10], 1
sub ecx, edx
imul eax, ecx, 0xfffffff8
sub ebx, ecx
mov ecx, dword [esp + 0x34]
add edi, eax
mov edx, dword [ebx]
mov dword [esp + 0x54], edx
mov dword [esp + 0x28], edx
mov dword [esp + 0x58], edi
mov dword [esp + 0x5c], ebx
cmp esi, ecx
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x10], eax
sete al
test eax, ecx
je 0x5e0f9a
mov esi, dword [esp + 0x20]
mov ecx, edi
and ecx, 0x1f
neg esi
shl edx, cl
and esi, 0x1f
mov ecx, esi
shr edx, cl
mov ecx, dword [esp + 0x18]
movzx eax, word [ecx + edx*4]
mov ecx, dword [esp + 0x1c]
mov word [ecx], ax
mov ecx, dword [esp + 0x18]
movzx eax, byte [ecx + edx*4 + 2]
add edi, eax
movzx eax, byte [ecx + edx*4 + 3]
add dword [esp + 0x1c], eax
mov ecx, edi
mov edx, dword [esp + 0x28]
and ecx, 0x1f
mov eax, edx
shl eax, cl
mov ecx, esi
mov esi, dword [esp + 0x1c]
shr eax, cl
mov ecx, dword [esp + 0x18]
lea ecx, [ecx + eax*4]
movzx eax, word [ecx]
mov word [esi], ax
movzx eax, byte [ecx + 2]
add edi, eax
movzx eax, byte [ecx + 3]
mov ecx, dword [esp + 0x34]
add esi, eax
mov dword [esp + 0x58], edi
mov dword [esp + 0x1c], esi
jmp 0x5e0e75
lea ecx, [esp + 0x54]
call fcn.005de5d0
mov edx, dword [esp + 0x54]
mov ebx, dword [esp + 0x5c]
mov edi, dword [esp + 0x58]
mov dword [esp + 0x28], edx
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x1c]
sub eax, ecx
cmp eax, 2
jb 0x5e10df
lea ecx, [ecx]
cmp edi, 0x20
jbe 0x5e0fbf
mov dword [esp + 0x10], 3
jmp 0x5e102b
cmp ebx, dword [esp + 0x64]
jb 0x5e0fd9
mov eax, edi
mov dword [esp + 0x10], 0
shr eax, 3
sub ebx, eax
and edi, 7
jmp 0x5e1019
cmp ebx, dword [esp + 0x60]
jne 0x5e0fed
cmp edi, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
jmp 0x5e102b
mov edx, edi
mov dword [esp + 0x10], 0
shr edx, 3
mov eax, ebx
sub eax, edx
cmp eax, dword [esp + 0x60]
jae 0x5e1012
mov edx, ebx
mov dword [esp + 0x10], 1
sub edx, dword [esp + 0x60]
imul eax, edx, 0xfffffff8
sub ebx, edx
add edi, eax
mov edx, dword [ebx]
mov dword [esp + 0x54], edx
mov dword [esp + 0x28], edx
mov dword [esp + 0x58], edi
mov dword [esp + 0x5c], ebx
mov eax, dword [esp + 0x3c]
mov esi, dword [esp + 0x18]
add eax, 0xfffffffe
cmp eax, ecx
sbb ecx, ecx
xor eax, eax
inc ecx
cmp dword [esp + 0x10], eax
sete al
test eax, ecx
je 0x5e1084
mov ecx, edi
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x20]
neg ecx
and ecx, 0x1f
shr edx, cl
mov ecx, dword [esp + 0x1c]
mov ax, word [esi + edx*4]
mov word [ecx], ax
movzx eax, byte [esi + edx*4 + 2]
add edi, eax
movzx eax, byte [esi + edx*4 + 3]
mov edx, dword [esp + 0x28]
add ecx, eax
mov dword [esp + 0x58], edi
mov dword [esp + 0x1c], ecx
jmp 0x5e0fb0
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x1c]
add eax, 0xfffffffe
cmp ecx, eax
ja 0x5e10df
mov ebx, dword [esp + 0x20]
neg ebx
and ebx, 0x1f
mov dword [esp + 0x30], ebx
mov ecx, edi
mov eax, edx
and ecx, 0x1f
shl eax, cl
mov ecx, ebx
mov ebx, dword [esp + 0x1c]
shr eax, cl
lea ecx, [esi + eax*4]
mov ax, word [ecx]
mov word [ebx], ax
movzx eax, byte [ecx + 2]
add edi, eax
movzx eax, byte [ecx + 3]
mov ecx, ebx
mov ebx, dword [esp + 0x30]
add ecx, eax
mov eax, dword [esp + 0x3c]
add eax, 0xfffffffe
mov dword [esp + 0x1c], ecx
cmp ecx, eax
jbe 0x5e10a0
mov dword [esp + 0x58], edi
cmp ecx, dword [esp + 0x3c]
jae 0x5e112e
mov eax, dword [esp + 0x18]
mov ecx, edi
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x20]
neg ecx
and ecx, 0x1f
shr edx, cl
mov ecx, dword [esp + 0x1c]
lea edx, [eax + edx*4]
mov al, byte [edx]
mov byte [ecx], al
cmp byte [edx + 3], 1
jne 0x5e1114
movzx eax, byte [edx + 2]
add edi, eax
jmp 0x5e112a
cmp edi, 0x20
jae 0x5e112e
movzx eax, byte [edx + 2]
add edi, eax
mov eax, 0x20
cmp edi, 0x20
cmova edi, eax
mov dword [esp + 0x58], edi
lea ecx, [esp + 0x54]
call fcn.005de660
lea ecx, [esp + 0x7c]
mov edx, eax
call fcn.005de660
lea ecx, [esp + 0x68]
and edx, eax
call fcn.005de660
lea ecx, [esp + 0x40]
and edx, eax
call fcn.005de660
test eax, edx
mov ecx, 0xffffffec
mov eax, dword [ebp + 0xc]
cmove eax, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret