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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov edx, dword [ebp + 0x14]
sub esp, 0x9c
push ebx
push esi
push edi
cmp edx, 0xa
jae 0x5deae3
mov eax, 0xffffffec
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov esi, dword [ebp + 8]
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x18]
add eax, esi
mov dword [esp + 0x90], eax
add eax, 0xfffffffd
mov dword [esp + 0x28], eax
mov dword [esp + 0xa0], 1
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 + 0x88], ebx
movzx ebx, word [eax + 4]
add eax, 6
mov dword [esp + 0x98], eax
sub edx, ebx
sub edx, dword [esp + 0x88]
add eax, edi
mov dword [esp + 0xa4], eax
sub edx, edi
add eax, dword [esp + 0x88]
sub edx, 6
mov dword [esp + 0x48], eax
mov eax, dword [ebp + 0xc]
add eax, 3
mov dword [esp + 0x10], ebx
shr eax, 2
mov dword [esp + 0x94], edi
mov dword [esp + 0x1c], edx
lea ebx, [eax + esi]
lea edi, [ebx + eax]
mov dword [esp + 0x9c], ebx
add eax, edi
mov dword [esp + 0x14], edi
mov edi, ebx
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x8c], eax
mov dword [esp + 0x2c], eax
movzx eax, byte [ecx + 2]
mov dword [esp + 0x30], edi
mov dword [esp + 0x24], ebx
mov dword [esp + 0x20], eax
cmp edx, dword [ebp + 0x14]
ja 0x5dead7
mov eax, dword [esp + 0x90]
cmp dword [esp + 0x8c], eax
ja 0x5dead7
cmp dword [ebp + 0xc], 6
jb 0x5dead7
push dword [esp + 0x94]
mov edx, dword [esp + 0x9c]
lea ecx, [esp + 0x38]
call fcn.005de460
add esp, 4
cmp eax, 0xffffff88
ja 0x5df82d
push dword [esp + 0x88]
mov edx, dword [esp + 0xa8]
lea ecx, [esp + 0x78]
call fcn.005de460
add esp, 4
cmp eax, 0xffffff88
ja 0x5df82d
push dword [esp + 0x10]
mov edx, dword [esp + 0x4c]
lea ecx, [esp + 0x64]
call fcn.005de460
add esp, 4
cmp eax, 0xffffff88
ja 0x5df82d
push dword [esp + 0x1c]
add edx, dword [esp + 0x14]
lea ecx, [esp + 0x50]
call fcn.005de460
add esp, 4
cmp eax, 0xffffff88
ja 0x5df82d
mov eax, dword [esp + 0x90]
mov edx, dword [esp + 0x8c]
sub eax, edx
cmp eax, 4
jb 0x5dee9a
cmp edx, dword [esp + 0x28]
sbb eax, eax
neg eax
test al, 1
je 0x5dee9a
mov eax, dword [esp + 0x20]
neg eax
and eax, 0x1f
mov dword [esp + 0x10], eax
jmp 0x5dec80
mov ebx, dword [esp + 0x38]
mov ecx, ebx
mov edx, dword [esp + 0x34]
and ecx, 0x1f
shl edx, cl
mov ecx, eax
shr edx, cl
mov ecx, dword [esp + 0x18]
movzx eax, byte [ecx + edx*2]
add ebx, eax
movzx eax, byte [ecx + edx*2 + 1]
mov edx, dword [esp + 0x74]
mov dword [esp + 0x98], ebx
mov ebx, dword [esp + 0x78]
mov ecx, ebx
and ecx, 0x1f
mov byte [esi], al
shl edx, cl
mov ecx, dword [esp + 0x10]
shr edx, cl
mov ecx, dword [esp + 0x18]
movzx eax, byte [ecx + edx*2]
add ebx, eax
movzx eax, byte [ecx + edx*2 + 1]
mov byte [edi], al
inc edi
mov dword [esp + 0x30], edi
mov edi, dword [esp + 0x64]
mov ecx, edi
and ecx, 0x1f
mov dword [esp + 0x94], ebx
mov ebx, dword [esp + 0x60]
mov edx, ebx
shl edx, cl
mov ecx, dword [esp + 0x10]
shr edx, cl
mov ecx, dword [esp + 0x18]
movzx eax, byte [ecx + edx*2]
add edi, eax
movzx eax, byte [ecx + edx*2 + 1]
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 0x4c]
mov edx, edi
mov byte [ecx], al
inc ecx
mov eax, dword [esp + 0x50]
mov dword [esp + 0x24], ecx
mov ecx, eax
and ecx, 0x1f
mov dword [esp + 0x88], eax
shl edx, cl
mov ecx, dword [esp + 0x10]
shr edx, cl
mov ecx, dword [esp + 0x18]
movzx eax, byte [ecx + edx*2]
add dword [esp + 0x88], eax
movzx eax, byte [ecx + edx*2 + 1]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x34]
mov byte [ecx], al
inc ecx
mov eax, dword [esp + 0x18]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x98]
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x10]
shr edx, cl
mov ecx, dword [esp + 0x98]
movzx eax, byte [eax + edx*2]
add ecx, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x94]
and ecx, 0x1f
movzx eax, byte [eax + edx*2 + 1]
mov edx, dword [esp + 0x74]
mov byte [esi + 1], al
add esi, 2
shl edx, cl
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x18]
shr edx, cl
mov ecx, dword [esp + 0x94]
movzx eax, byte [eax + edx*2]
add ecx, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x78], ecx
mov ecx, dword [esp + 0x30]
movzx eax, byte [eax + edx*2 + 1]
mov edx, dword [esp + 0x1c]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x30], ecx
mov ecx, edx
and ecx, 0x1f
shl ebx, cl
mov ecx, dword [esp + 0x10]
shr ebx, cl
mov ecx, dword [esp + 0x18]
movzx eax, byte [ecx + ebx*2]
add edx, eax
movzx eax, byte [ecx + ebx*2 + 1]
mov ecx, dword [esp + 0x24]
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x64], edx
mov edx, dword [esp + 0x88]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x24], ecx
mov ecx, edx
and ecx, 0x1f
shl edi, cl
mov ecx, dword [esp + 0x10]
shr edi, cl
lea ecx, [esp + 0x4c]
movzx eax, byte [ebx + edi*2]
add edx, eax
movzx eax, byte [ebx + edi*2 + 1]
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0x50], edx
mov byte [ebx], al
inc ebx
mov dword [esp + 0x2c], ebx
call fcn.005de590
neg eax
lea ecx, [esp + 0x60]
sbb edi, edi
inc edi
call fcn.005de590
neg eax
lea ecx, [esp + 0x74]
sbb eax, eax
inc eax
and edi, eax
call fcn.005de590
neg eax
lea ecx, [esp + 0x34]
sbb eax, eax
inc eax
and edi, eax
call fcn.005de590
mov ecx, dword [esp + 0xa0]
neg eax
sbb eax, eax
inc eax
and edi, eax
and ecx, edi
cmp ebx, dword [esp + 0x28]
mov edi, dword [esp + 0x30]
sbb eax, eax
mov dword [esp + 0xa0], ecx
neg eax
test ecx, eax
mov eax, dword [esp + 0x10]
jne 0x5dec80
mov ebx, dword [esp + 0x24]
mov edx, dword [esp + 0x8c]
mov ecx, dword [esp + 0x9c]
cmp esi, ecx
ja 0x5dead7
cmp edi, dword [esp + 0x14]
ja 0x5dead7
cmp ebx, edx
ja 0x5dead7
mov eax, ecx
sub eax, esi
cmp eax, 3
jle 0x5defa5
mov ebx, dword [esp + 0x38]
lea edx, [ecx - 3]
mov dword [esp + 0x1c], edx
cmp ebx, 0x20
jbe 0x5deee3
mov edx, dword [esp + 0x34]
mov edi, 3
jmp 0x5def40
mov ecx, dword [esp + 0x3c]
cmp ecx, dword [esp + 0x44]
jb 0x5deefb
mov eax, ebx
and ebx, 7
shr eax, 3
sub ecx, eax
xor edi, edi
jmp 0x5def32
cmp ecx, dword [esp + 0x40]
jne 0x5def0f
mov edx, dword [esp + 0x34]
cmp ebx, 0x20
sbb edi, edi
add edi, 2
jmp 0x5def40
mov edx, ebx
mov eax, ecx
shr edx, 3
xor edi, edi
sub eax, edx
cmp eax, dword [esp + 0x40]
jae 0x5def2b
mov edx, ecx
mov edi, 1
sub edx, dword [esp + 0x40]
imul eax, edx, 0xfffffff8
sub ecx, edx
add ebx, eax
mov edx, dword [ecx]
mov dword [esp + 0x34], edx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], ecx
cmp esi, dword [esp + 0x1c]
sbb ecx, ecx
xor eax, eax
neg ecx
test edi, edi
sete al
test eax, ecx
je 0x5defb2
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, byte [ecx + edx*2]
add ebx, eax
movzx eax, byte [ecx + edx*2 + 1]
mov edx, dword [esp + 0x34]
mov ecx, ebx
and ecx, 0x1f
mov byte [esi], al
shl edx, cl
mov ecx, edi
shr edx, cl
mov ecx, dword [esp + 0x18]
movzx eax, byte [ecx + edx*2]
add ebx, eax
movzx eax, byte [ecx + edx*2 + 1]
mov byte [esi + 1], al
add esi, 2
mov dword [esp + 0x38], ebx
jmp 0x5deed3
lea ecx, [esp + 0x34]
call fcn.005de5d0
mov ebx, dword [esp + 0x38]
mov edi, dword [esp + 0x18]
cmp ebx, 0x20
jbe 0x5defc9
mov edx, dword [esp + 0x34]
mov dword [esp + 0x10], 3
jmp 0x5df039
mov ecx, dword [esp + 0x3c]
cmp ecx, dword [esp + 0x44]
jb 0x5defe7
mov eax, ebx
mov dword [esp + 0x10], 0
shr eax, 3
sub ecx, eax
and ebx, 7
jmp 0x5df02b
cmp ecx, dword [esp + 0x40]
jne 0x5defff
mov edx, dword [esp + 0x34]
cmp ebx, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
jmp 0x5df039
mov edx, ebx
mov dword [esp + 0x10], 0
shr edx, 3
mov eax, ecx
sub eax, edx
cmp eax, dword [esp + 0x40]
jae 0x5df024
mov edx, ecx
mov dword [esp + 0x10], 1
sub edx, dword [esp + 0x40]
imul eax, edx, 0xfffffff8
sub ecx, edx
add ebx, eax
mov edx, dword [ecx]
mov dword [esp + 0x34], edx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], ecx
cmp esi, dword [esp + 0x9c]
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x10], eax
sete al
test eax, ecx
je 0x5df079
mov ecx, ebx
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x20]
neg ecx
and ecx, 0x1f
shr edx, cl
movzx eax, byte [edi + edx*2]
add ebx, eax
mov al, byte [edi + edx*2 + 1]
mov byte [esi], al
inc esi
mov dword [esp + 0x38], ebx
jmp 0x5defb6
mov eax, dword [esp + 0x9c]
sub eax, esi
mov dword [esp + 0x1c], 0
cmp esi, dword [esp + 0x9c]
mov dword [esp + 0x28], 0
cmova eax, dword [esp + 0x1c]
mov dword [esp + 0x1c], eax
test eax, eax
je 0x5df0e9
mov eax, dword [esp + 0x20]
neg eax
and eax, 0x1f
mov dword [esp + 0x48], eax
mov ecx, ebx
lea esi, [esi + 1]
and ecx, 0x1f
shl edx, cl
mov ecx, eax
shr edx, cl
movzx eax, byte [edi + edx*2]
add ebx, eax
mov al, byte [edi + edx*2 + 1]
mov edx, dword [esp + 0x34]
mov byte [esi - 1], al
mov eax, dword [esp + 0x28]
inc eax
cmp eax, dword [esp + 0x1c]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x48]
jb 0x5df0b3
mov dword [esp + 0x38], ebx
mov ecx, dword [esp + 0x14]
mov eax, ecx
mov esi, dword [esp + 0x30]
sub eax, esi
cmp eax, 3
jle 0x5df20e
mov ebx, dword [esp + 0x7c]
add ecx, 0xfffffffd
mov edi, dword [esp + 0x78]
mov dword [esp + 0x28], ecx
lea ecx, [ecx]
cmp edi, 0x20
jbe 0x5df123
mov edx, dword [esp + 0x74]
mov dword [esp + 0x10], 3
jmp 0x5df197
cmp ebx, dword [esp + 0x84]
jb 0x5df140
mov eax, edi
mov dword [esp + 0x10], 0
shr eax, 3
sub ebx, eax
and edi, 7
jmp 0x5df189
mov edx, dword [esp + 0x80]
cmp ebx, edx
jne 0x5df15d
mov edx, dword [esp + 0x74]
cmp edi, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
jmp 0x5df197
mov ecx, edi
mov dword [esp + 0x10], 0
shr ecx, 3
mov eax, ebx
sub eax, ecx
cmp eax, edx
jae 0x5df17e
mov ecx, ebx
mov dword [esp + 0x10], 1
sub ecx, edx
imul eax, ecx, 0xfffffff8
sub ebx, ecx
mov ecx, dword [esp + 0x28]
add edi, eax
mov edx, dword [ebx]
mov dword [esp + 0x74], edx
mov dword [esp + 0x78], edi
mov dword [esp + 0x7c], ebx
cmp esi, ecx
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x10], eax
sete al
test eax, ecx
je 0x5df220
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, byte [ecx + edx*2]
add edi, eax
movzx eax, byte [ecx + edx*2 + 1]
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x74]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x30], ecx
mov ecx, edi
and ecx, 0x1f
shl edx, cl
mov ecx, esi
mov esi, dword [esp + 0x30]
shr edx, cl
mov ecx, dword [esp + 0x18]
movzx eax, byte [ecx + edx*2]
add edi, eax
movzx eax, byte [ecx + edx*2 + 1]
mov ecx, dword [esp + 0x28]
mov byte [esi], al
inc esi
mov dword [esp + 0x78], edi
mov dword [esp + 0x30], esi
jmp 0x5df110
lea ecx, [esp + 0x74]
call fcn.005de5d0
mov ebx, dword [esp + 0x7c]
mov edi, dword [esp + 0x78]
nop
cmp edi, 0x20
jbe 0x5df233
mov edx, dword [esp + 0x74]
mov dword [esp + 0x10], 3
jmp 0x5df2a3
cmp ebx, dword [esp + 0x84]
jb 0x5df250
mov eax, edi
mov dword [esp + 0x10], 0
shr eax, 3
sub ebx, eax
and edi, 7
jmp 0x5df295
mov edx, dword [esp + 0x80]
cmp ebx, edx
jne 0x5df26d
mov edx, dword [esp + 0x74]
cmp edi, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
jmp 0x5df2a3
mov ecx, edi
mov dword [esp + 0x10], 0
shr ecx, 3
mov eax, ebx
sub eax, ecx
cmp eax, edx
jae 0x5df28e
mov ecx, ebx
mov dword [esp + 0x10], 1
sub ecx, edx
imul eax, ecx, 0xfffffff8
sub ebx, ecx
add edi, eax
mov edx, dword [ebx]
mov dword [esp + 0x74], edx
mov dword [esp + 0x78], edi
mov dword [esp + 0x7c], ebx
cmp esi, dword [esp + 0x14]
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x10], eax
sete al
test eax, ecx
je 0x5df2e4
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]
movzx eax, byte [ecx + edx*2]
add edi, eax
mov al, byte [ecx + edx*2 + 1]
mov byte [esi], al
inc esi
mov dword [esp + 0x78], edi
jmp 0x5df220
mov eax, dword [esp + 0x14]
xor ebx, ebx
sub eax, esi
cmp esi, dword [esp + 0x14]
cmova eax, ebx
mov dword [esp + 0x1c], eax
test eax, eax
je 0x5df33a
mov eax, dword [esp + 0x20]
neg eax
and eax, 0x1f
mov dword [esp + 0x48], eax
mov ecx, edi
lea esi, [esi + 1]
and ecx, 0x1f
inc ebx
shl edx, cl
mov ecx, eax
shr edx, cl
mov ecx, dword [esp + 0x18]
movzx eax, byte [ecx + edx*2]
add edi, eax
mov al, byte [ecx + edx*2 + 1]
mov edx, dword [esp + 0x74]
mov byte [esi - 1], al
mov eax, dword [esp + 0x48]
cmp ebx, dword [esp + 0x1c]
jb 0x5df308
mov dword [esp + 0x78], edi
mov ecx, dword [esp + 0x8c]
mov eax, ecx
mov edx, dword [esp + 0x24]
sub eax, edx
cmp eax, 3
jle 0x5df445
mov ebx, dword [esp + 0x68]
add ecx, 0xfffffffd
mov edi, dword [esp + 0x64]
mov dword [esp + 0x28], ecx
cmp edi, 0x20
jbe 0x5df36d
mov esi, 3
jmp 0x5df3cc
cmp ebx, dword [esp + 0x70]
jb 0x5df387
mov eax, edi
and edi, 7
shr eax, 3
sub ebx, eax
mov esi, dword [ebx]
mov dword [esp + 0x60], esi
xor esi, esi
jmp 0x5df3c4
cmp ebx, dword [esp + 0x6c]
jne 0x5df397
cmp edi, 0x20
sbb esi, esi
add esi, 2
jmp 0x5df3cc
mov ecx, edi
mov eax, ebx
shr ecx, 3
xor esi, esi
sub eax, ecx
cmp eax, dword [esp + 0x6c]
jae 0x5df3b3
mov ecx, ebx
mov esi, 1
sub ecx, dword [esp + 0x6c]
imul eax, ecx, 0xfffffff8
sub ebx, ecx
mov ecx, dword [esp + 0x28]
add edi, eax
mov eax, dword [ebx]
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], edi
mov dword [esp + 0x68], ebx
cmp edx, ecx
sbb ecx, ecx
xor eax, eax
neg ecx
test esi, esi
sete al
test eax, ecx
je 0x5df45a
mov esi, dword [esp + 0x20]
mov ecx, edi
mov edx, dword [esp + 0x60]
and ecx, 0x1f
shl edx, cl
neg esi
and esi, 0x1f
mov ecx, esi
shr edx, cl
mov ecx, dword [esp + 0x18]
movzx eax, byte [ecx + edx*2]
add edi, eax
movzx eax, byte [ecx + edx*2 + 1]
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x60]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x24], ecx
mov ecx, edi
and ecx, 0x1f
shl edx, cl
mov ecx, esi
shr edx, cl
mov ecx, dword [esp + 0x18]
movzx eax, byte [ecx + edx*2]
add edi, eax
movzx eax, byte [ecx + edx*2 + 1]
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x64], edi
mov byte [edx], al
inc edx
mov dword [esp + 0x24], edx
jmp 0x5df361
lea ecx, [esp + 0x60]
call fcn.005de5d0
mov ebx, dword [esp + 0x68]
mov edi, dword [esp + 0x64]
mov edx, dword [esp + 0x24]
mov esi, dword [esp + 0x18]
mov edi, edi
cmp edi, 0x20
jbe 0x5df46f
mov dword [esp + 0x14], 3
jmp 0x5df4d7
cmp ebx, dword [esp + 0x70]
jb 0x5df489
mov eax, edi
mov dword [esp + 0x14], 0
shr eax, 3
sub ebx, eax
and edi, 7
jmp 0x5df4c9
cmp ebx, dword [esp + 0x6c]
jne 0x5df49d
cmp edi, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x14], eax
jmp 0x5df4d7
mov ecx, edi
mov dword [esp + 0x14], 0
shr ecx, 3
mov eax, ebx
sub eax, ecx
cmp eax, dword [esp + 0x6c]
jae 0x5df4c2
mov ecx, ebx
mov dword [esp + 0x14], 1
sub ecx, dword [esp + 0x6c]
imul eax, ecx, 0xfffffff8
sub ebx, ecx
add edi, eax
mov eax, dword [ebx]
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], edi
mov dword [esp + 0x68], ebx
cmp edx, dword [esp + 0x8c]
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x14], eax
sete al
test eax, ecx
je 0x5df523
mov edx, dword [esp + 0x60]
mov ecx, edi
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x20]
neg ecx
and ecx, 0x1f
shr edx, cl
movzx eax, byte [esi + edx*2]
add edi, eax
mov al, byte [esi + edx*2 + 1]
mov edx, dword [esp + 0x24]
mov dword [esp + 0x64], edi
mov byte [edx], al
inc edx
mov dword [esp + 0x24], edx
jmp 0x5df460
mov eax, dword [esp + 0x8c]
xor ebx, ebx
sub eax, edx
cmp edx, dword [esp + 0x8c]
cmova eax, ebx
mov dword [esp + 0x1c], eax
test eax, eax
je 0x5df583
mov eax, dword [esp + 0x20]
neg eax
and eax, 0x1f
mov dword [esp + 0x48], eax
lea ecx, [ecx]
mov edx, dword [esp + 0x60]
mov ecx, edi
and ecx, 0x1f
inc ebx
shl edx, cl
mov ecx, eax
shr edx, cl
mov ecx, dword [esp + 0x24]
movzx eax, byte [esi + edx*2]
add edi, eax
mov al, byte [esi + edx*2 + 1]
mov byte [ecx], al
inc ecx
mov eax, dword [esp + 0x48]
mov dword [esp + 0x24], ecx
cmp ebx, dword [esp + 0x1c]
jb 0x5df550
mov dword [esp + 0x64], edi
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x2c]
sub eax, ecx
cmp eax, 3
jle 0x5df6a1
mov ebx, dword [esp + 0x54]
mov edi, dword [esp + 0x50]
cmp edi, 0x20
jbe 0x5df5b4
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x14], 3
jmp 0x5df620
cmp ebx, dword [esp + 0x5c]
jb 0x5df5ce
mov eax, edi
mov dword [esp + 0x14], 0
shr eax, 3
sub ebx, eax
and edi, 7
jmp 0x5df612
cmp ebx, dword [esp + 0x58]
jne 0x5df5e6
mov edx, dword [esp + 0x4c]
cmp edi, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x14], eax
jmp 0x5df620
mov edx, edi
mov dword [esp + 0x14], 0
shr edx, 3
mov eax, ebx
sub eax, edx
cmp eax, dword [esp + 0x58]
jae 0x5df60b
mov edx, ebx
mov dword [esp + 0x14], 1
sub edx, dword [esp + 0x58]
imul eax, edx, 0xfffffff8
sub ebx, edx
add edi, eax
mov edx, dword [ebx]
mov dword [esp + 0x4c], edx
mov dword [esp + 0x50], edi
mov dword [esp + 0x54], ebx
mov eax, dword [esp + 0x90]
mov esi, dword [esp + 0x18]
add eax, 0xfffffffd
cmp ecx, eax
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x14], eax
sete al
test eax, ecx
je 0x5df6b2
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, byte [ecx + edx*2]
add edi, eax
movzx eax, byte [ecx + edx*2 + 1]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x4c]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x2c], ecx
mov ecx, edi
and ecx, 0x1f
shl edx, cl
mov ecx, esi
mov esi, dword [esp + 0x18]
shr edx, cl
mov ecx, dword [esp + 0x2c]
movzx eax, byte [esi + edx*2]
add edi, eax
movzx eax, byte [esi + edx*2 + 1]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x50], edi
mov dword [esp + 0x2c], ecx
jmp 0x5df5a1
lea ecx, [esp + 0x4c]
call fcn.005de5d0
mov ebx, dword [esp + 0x54]
mov edi, dword [esp + 0x50]
mov ecx, dword [esp + 0x2c]
cmp edi, 0x20
jbe 0x5df6c9
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x14], 3
jmp 0x5df735
cmp ebx, dword [esp + 0x5c]
jb 0x5df6e3
mov eax, edi
mov dword [esp + 0x14], 0
shr eax, 3
sub ebx, eax
and edi, 7
jmp 0x5df727
cmp ebx, dword [esp + 0x58]
jne 0x5df6fb
mov edx, dword [esp + 0x4c]
cmp edi, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x14], eax
jmp 0x5df735
mov edx, edi
mov dword [esp + 0x14], 0
shr edx, 3
mov eax, ebx
sub eax, edx
cmp eax, dword [esp + 0x58]
jae 0x5df720
mov edx, ebx
mov dword [esp + 0x14], 1
sub edx, dword [esp + 0x58]
imul eax, edx, 0xfffffff8
sub ebx, edx
add edi, eax
mov edx, dword [ebx]
mov dword [esp + 0x4c], edx
mov dword [esp + 0x50], edi
mov dword [esp + 0x54], ebx
cmp ecx, dword [esp + 0x90]
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x14], eax
sete al
test eax, ecx
je 0x5df77d
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]
movzx eax, byte [esi + edx*2]
add edi, eax
mov al, byte [esi + edx*2 + 1]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x50], edi
mov dword [esp + 0x2c], ecx
jmp 0x5df6b6
mov eax, dword [esp + 0x90]
mov ebx, dword [esp + 0x2c]
sub eax, ebx
cmp ebx, dword [esp + 0x90]
mov dword [esp + 0x1c], 0
cmova eax, dword [esp + 0x1c]
mov dword [esp + 0x28], 0
mov dword [esp + 0x1c], eax
test eax, eax
je 0x5df7f6
mov eax, dword [esp + 0x20]
neg eax
and eax, 0x1f
mov dword [esp + 0x20], eax
jmp 0x5df7c0
mov ecx, edi
lea ebx, [ebx + 1]
and ecx, 0x1f
shl edx, cl
mov ecx, eax
shr edx, cl
movzx eax, byte [esi + edx*2]
add edi, eax
mov al, byte [esi + edx*2 + 1]
mov edx, dword [esp + 0x4c]
mov byte [ebx - 1], al
mov eax, dword [esp + 0x28]
inc eax
cmp eax, dword [esp + 0x1c]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x20]
jb 0x5df7c0
mov dword [esp + 0x50], edi
lea ecx, [esp + 0x4c]
call fcn.005de660
lea ecx, [esp + 0x60]
mov edx, eax
call fcn.005de660
lea ecx, [esp + 0x74]
and edx, eax
call fcn.005de660
lea ecx, [esp + 0x34]
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