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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x9c
push ebx
push esi
mov esi, dword [ebp + 0xc]
mov eax, edx
mov dword [esp + 0xa0], eax
mov ebx, ecx
mov dword [esp + 0x38], ebx
push edi
cmp esi, 0xa
jae 0x5a6472
mov eax, 0xffffffec
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [ebp + 0x10]
add eax, ebx
mov ecx, dword [ebp + 8]
mov edi, esi
mov dword [esp + 0xa0], eax
mov dword [esp + 0x28], 1
lea eax, [edx + 4]
mov dword [esp + 0x14], eax
movzx eax, word [ecx]
mov dword [esp + 0x10], eax
movzx eax, word [ecx + 2]
mov dword [esp + 0x18], eax
movzx eax, word [ecx + 4]
add ecx, 6
sub edi, eax
mov dword [esp + 0x1c], eax
sub edi, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
sub edi, eax
add eax, ecx
mov dword [esp + 0x84], ecx
mov dword [esp + 0x2c], eax
sub edi, 6
add eax, dword [esp + 0x18]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0xa4]
add eax, 3
shr eax, 2
lea ecx, [eax + ebx]
lea ebx, [ecx + eax]
mov dword [esp + 0x80], ecx
add eax, ebx
mov dword [esp + 0x24], ebx
mov esi, eax
mov dword [esp + 0x30], ebx
movzx ebx, byte [edx + 2]
mov dword [esp + 0x40], eax
mov dword [esp + 0x34], ecx
mov dword [esp + 0x9c], esi
mov dword [esp + 0x38], ebx
cmp edi, dword [ebp + 0xc]
ja 0x5a6466
mov eax, dword [esp + 0x10]
lea ecx, [esp + 0x58]
mov edx, dword [esp + 0x84]
push eax
call fcn.005a5c70
add esp, 4
cmp eax, 0xffffff88
ja 0x5a7319
push dword [esp + 0x18]
mov edx, dword [esp + 0x30]
lea ecx, [esp + 0x48]
call fcn.005a5c70
add esp, 4
cmp eax, 0xffffff88
ja 0x5a7319
push dword [esp + 0x1c]
mov edx, dword [esp + 0x24]
lea ecx, [esp + 0x70]
call fcn.005a5c70
add esp, 4
cmp eax, 0xffffff88
ja 0x5a7319
mov eax, dword [esp + 0x1c]
lea ecx, [esp + 0x88]
mov edx, dword [esp + 0x20]
push edi
lea edx, [edx + eax]
call fcn.005a5c70
add esp, 4
cmp eax, 0xffffff88
ja 0x5a7319
mov eax, dword [esp + 0xa0]
add eax, 0xfffffffd
cmp esi, eax
sbb eax, eax
neg eax
test al, 1
mov eax, dword [esp + 0x48]
mov dword [esp + 0x1c], eax
je 0x5a68a3
mov edx, dword [esp + 0x5c]
neg ebx
mov edi, dword [esp + 0x70]
and ebx, 0x1f
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0x8c]
mov dword [esp + 0x20], edx
mov ecx, edx
mov edx, dword [esp + 0x58]
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x18]
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [ecx + edx*2 + 1]
add dword [esp + 0x20], eax
movzx eax, byte [ecx + edx*2]
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x44]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x1c]
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x18]
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [ecx + edx*2 + 1]
add dword [esp + 0x1c], eax
movzx eax, byte [ecx + edx*2]
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x6c]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x34], ecx
mov ecx, edi
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x18]
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [ecx + edx*2 + 1]
add edi, eax
movzx eax, byte [ecx + edx*2]
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x88]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x30], ecx
mov ecx, ebx
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x18]
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [ecx + edx*2 + 1]
add ebx, eax
movzx eax, byte [ecx + edx*2]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x58]
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x18]
shr edx, cl
mov ecx, dword [esp + 0x20]
mov byte [esi], al
mov eax, dword [esp + 0x14]
movzx eax, byte [eax + edx*2 + 1]
add ecx, eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x3c]
movzx eax, byte [eax + edx*2]
mov edx, dword [esp + 0x44]
mov byte [ecx], al
inc ecx
mov eax, dword [esp + 0x14]
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x1c]
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x18]
shr edx, cl
mov ecx, dword [esp + 0x1c]
movzx eax, byte [eax + edx*2 + 1]
add ecx, eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x34]
movzx eax, byte [eax + edx*2]
mov edx, dword [esp + 0x6c]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x34], ecx
mov ecx, edi
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x18]
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [ecx + edx*2 + 1]
add edi, eax
movzx eax, byte [ecx + edx*2]
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x88]
mov dword [esp + 0x70], edi
mov byte [ecx], al
inc ecx
mov dword [esp + 0x30], ecx
mov ecx, ebx
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x18]
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [ecx + edx*2 + 1]
add ebx, eax
movzx eax, byte [ecx + edx*2]
mov ecx, dword [esp + 0x60]
mov byte [esi + 1], al
add esi, 2
mov dword [esp + 0x8c], ebx
cmp ecx, dword [esp + 0x68]
jae 0x5a6767
mov ecx, 3
jmp 0x5a6789
mov edx, dword [esp + 0x20]
mov eax, edx
shr eax, 3
and edx, 7
sub ecx, eax
mov dword [esp + 0x20], edx
mov dword [esp + 0x60], ecx
mov dword [esp + 0x5c], edx
mov eax, dword [ecx]
xor ecx, ecx
mov dword [esp + 0x58], eax
xor eax, eax
test ecx, ecx
mov ecx, dword [esp + 0x28]
sete al
and ecx, eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0x28], ecx
cmp dword [esp + 0x4c], eax
jae 0x5a67ae
mov dword [esp + 0x10], 3
jmp 0x5a67e0
mov ecx, dword [esp + 0x1c]
mov eax, ecx
shr eax, 3
sub dword [esp + 0x4c], eax
and ecx, 7
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x48], ecx
mov eax, dword [eax]
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x44], eax
mov dword [esp + 0x10], 0
xor eax, eax
cmp dword [esp + 0x10], eax
sete al
and ecx, eax
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x74]
cmp ecx, dword [esp + 0x7c]
jae 0x5a6800
mov ecx, 3
jmp 0x5a681a
mov eax, edi
and edi, 7
shr eax, 3
sub ecx, eax
mov dword [esp + 0x70], edi
mov dword [esp + 0x74], ecx
mov eax, dword [ecx]
xor ecx, ecx
mov dword [esp + 0x6c], eax
xor eax, eax
test ecx, ecx
mov ecx, dword [esp + 0x90]
sete al
and dword [esp + 0x28], eax
cmp ecx, dword [esp + 0x98]
jae 0x5a683c
mov ecx, 3
jmp 0x5a685f
mov eax, ebx
and ebx, 7
shr eax, 3
sub ecx, eax
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x90], ecx
mov eax, dword [ecx]
xor ecx, ecx
mov dword [esp + 0x88], eax
mov edx, dword [esp + 0x20]
xor eax, eax
test ecx, ecx
mov ecx, dword [esp + 0x28]
sete al
and ecx, eax
mov eax, dword [esp + 0xa0]
add eax, 0xfffffffd
mov dword [esp + 0x28], ecx
cmp esi, eax
sbb eax, eax
neg eax
test ecx, eax
jne 0x5a65d1
mov dword [esp + 0x18], edi
mov dword [esp + 0x18], edi
mov edi, edx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x9c], esi
jmp 0x5a68ba
mov edi, dword [esp + 0x5c]
mov ecx, dword [esp + 0x70]
mov ebx, dword [esp + 0x8c]
mov dword [esp + 0x20], edi
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x28], ebx
cmp ecx, dword [esp + 0x80]
ja 0x5a6466
mov edx, dword [esp + 0x24]
cmp dword [esp + 0x34], edx
ja 0x5a6466
mov edx, dword [esp + 0x40]
cmp dword [esp + 0x30], edx
ja 0x5a6466
mov esi, dword [esp + 0x60]
nop
cmp edi, 0x20
jbe 0x5a6903
mov edx, dword [esp + 0x58]
mov dword [esp + 0x10], 3
jmp 0x5a6973
cmp esi, dword [esp + 0x68]
jb 0x5a691d
mov eax, edi
mov dword [esp + 0x10], 0
shr eax, 3
sub esi, eax
and edi, 7
jmp 0x5a6961
cmp esi, dword [esp + 0x64]
jne 0x5a6935
mov edx, dword [esp + 0x58]
cmp edi, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
jmp 0x5a6973
mov edx, edi
mov dword [esp + 0x10], 0
shr edx, 3
mov eax, esi
sub eax, edx
cmp eax, dword [esp + 0x64]
jae 0x5a695a
mov edx, esi
mov dword [esp + 0x10], 1
sub edx, dword [esp + 0x64]
imul eax, edx, 0xfffffff8
sub esi, edx
add edi, eax
mov edx, dword [esi]
mov dword [esp + 0x58], edx
mov dword [esp + 0x5c], edi
mov dword [esp + 0x20], edi
mov dword [esp + 0x60], esi
mov eax, dword [esp + 0x80]
add eax, 0xfffffffd
cmp ecx, eax
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x10], eax
sete al
test eax, ecx
je 0x5a6a04
mov ecx, dword [esp + 0x20]
mov edi, dword [esp + 0x38]
and ecx, 0x1f
mov eax, dword [esp + 0x14]
neg edi
shl edx, cl
and edi, 0x1f
mov ecx, edi
shr edx, cl
mov ecx, dword [esp + 0x20]
movzx eax, byte [eax + edx*2 + 1]
add ecx, eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x20], ecx
and ecx, 0x1f
movzx eax, byte [eax + edx*2]
mov edx, dword [esp + 0x3c]
mov byte [edx], al
inc edx
mov dword [esp + 0x3c], edx
mov edx, dword [esp + 0x58]
shl edx, cl
mov ecx, edi
mov edi, dword [esp + 0x20]
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [ecx + edx*2 + 1]
add edi, eax
movzx eax, byte [ecx + edx*2]
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x20], edi
mov dword [esp + 0x5c], edi
mov byte [ecx], al
inc ecx
mov dword [esp + 0x3c], ecx
jmp 0x5a68f0
mov ebx, dword [esp + 0x60]
mov ecx, dword [esp + 0x3c]
lea esp, [esp]
cmp edi, 0x20
jbe 0x5a6a23
mov edx, dword [esp + 0x58]
mov dword [esp + 0x10], 3
jmp 0x5a6a8f
cmp ebx, dword [esp + 0x68]
jb 0x5a6a3d
mov eax, edi
mov dword [esp + 0x10], 0
shr eax, 3
sub ebx, eax
and edi, 7
jmp 0x5a6a81
cmp ebx, dword [esp + 0x64]
jne 0x5a6a55
mov edx, dword [esp + 0x58]
cmp edi, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
jmp 0x5a6a8f
mov edx, edi
mov dword [esp + 0x10], 0
shr edx, 3
mov eax, ebx
sub eax, edx
cmp eax, dword [esp + 0x64]
jae 0x5a6a7a
mov edx, ebx
mov dword [esp + 0x10], 1
sub edx, dword [esp + 0x64]
imul eax, edx, 0xfffffff8
sub ebx, edx
add edi, eax
mov edx, dword [ebx]
mov dword [esp + 0x58], edx
mov dword [esp + 0x5c], edi
mov dword [esp + 0x60], ebx
cmp ecx, dword [esp + 0x80]
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x10], eax
sete al
test eax, ecx
je 0x5a6adb
mov ecx, edi
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x38]
neg ecx
and ecx, 0x1f
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [ecx + edx*2 + 1]
add edi, eax
mov al, byte [ecx + edx*2]
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x5c], edi
mov byte [ecx], al
inc ecx
mov dword [esp + 0x3c], ecx
jmp 0x5a6a10
mov ecx, dword [esp + 0x80]
mov eax, ecx
sub eax, dword [esp + 0x3c]
cmp dword [esp + 0x3c], ecx
mov dword [esp + 0x2c], 0
cmova eax, dword [esp + 0x2c]
mov dword [esp + 0x10], 0
mov dword [esp + 0x2c], eax
test eax, eax
je 0x5a6b5a
mov eax, dword [esp + 0x38]
mov esi, dword [esp + 0x3c]
neg eax
mov ebx, dword [esp + 0x14]
and eax, 0x1f
mov dword [esp + 0x84], eax
mov ecx, edi
lea esi, [esi + 1]
and ecx, 0x1f
shl edx, cl
mov ecx, eax
shr edx, cl
movzx eax, byte [ebx + edx*2 + 1]
add edi, eax
mov al, byte [ebx + edx*2]
mov edx, dword [esp + 0x58]
mov byte [esi - 1], al
mov eax, dword [esp + 0x10]
inc eax
cmp eax, dword [esp + 0x2c]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x84]
jb 0x5a6b21
mov dword [esp + 0x5c], edi
mov edi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x34]
cmp edi, 0x20
jbe 0x5a6b79
mov edx, dword [esp + 0x44]
mov dword [esp + 0x10], 3
jmp 0x5a6be9
cmp ebx, dword [esp + 0x54]
jb 0x5a6b93
mov eax, edi
mov dword [esp + 0x10], 0
shr eax, 3
sub ebx, eax
and edi, 7
jmp 0x5a6bd7
cmp ebx, dword [esp + 0x50]
jne 0x5a6bab
mov edx, dword [esp + 0x44]
cmp edi, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
jmp 0x5a6be9
mov edx, edi
mov dword [esp + 0x10], 0
shr edx, 3
mov eax, ebx
sub eax, edx
cmp eax, dword [esp + 0x50]
jae 0x5a6bd0
mov edx, ebx
mov dword [esp + 0x10], 1
sub edx, dword [esp + 0x50]
imul eax, edx, 0xfffffff8
sub ebx, edx
add edi, eax
mov edx, dword [ebx]
mov dword [esp + 0x44], edx
mov dword [esp + 0x48], edi
mov dword [esp + 0x1c], edi
mov dword [esp + 0x4c], ebx
mov eax, dword [esp + 0x24]
add eax, 0xfffffffd
cmp ecx, eax
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x10], eax
sete al
test eax, ecx
je 0x5a6c77
mov ecx, dword [esp + 0x1c]
mov edi, dword [esp + 0x38]
and ecx, 0x1f
mov eax, dword [esp + 0x14]
neg edi
shl edx, cl
and edi, 0x1f
mov ecx, edi
shr edx, cl
mov ecx, dword [esp + 0x1c]
movzx eax, byte [eax + edx*2 + 1]
add ecx, eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x1c], ecx
and ecx, 0x1f
movzx eax, byte [eax + edx*2]
mov edx, dword [esp + 0x34]
mov byte [edx], al
inc edx
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x44]
shl edx, cl
mov ecx, edi
mov edi, dword [esp + 0x1c]
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [ecx + edx*2 + 1]
add edi, eax
movzx eax, byte [ecx + edx*2]
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x1c], edi
mov dword [esp + 0x48], edi
mov byte [ecx], al
inc ecx
mov dword [esp + 0x34], ecx
jmp 0x5a6b66
mov esi, dword [esp + 0x4c]
mov ecx, dword [esp + 0x34]
nop
cmp edi, 0x20
jbe 0x5a6c93
mov edx, dword [esp + 0x44]
mov dword [esp + 0x10], 3
jmp 0x5a6cff
cmp esi, dword [esp + 0x54]
jb 0x5a6cad
mov eax, edi
mov dword [esp + 0x10], 0
shr eax, 3
sub esi, eax
and edi, 7
jmp 0x5a6cf1
cmp esi, dword [esp + 0x50]
jne 0x5a6cc5
mov edx, dword [esp + 0x44]
cmp edi, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
jmp 0x5a6cff
mov edx, edi
mov dword [esp + 0x10], 0
shr edx, 3
mov eax, esi
sub eax, edx
cmp eax, dword [esp + 0x50]
jae 0x5a6cea
mov edx, esi
mov dword [esp + 0x10], 1
sub edx, dword [esp + 0x50]
imul eax, edx, 0xfffffff8
sub esi, edx
add edi, eax
mov edx, dword [esi]
mov dword [esp + 0x44], edx
mov dword [esp + 0x48], edi
mov dword [esp + 0x4c], esi
cmp ecx, dword [esp + 0x24]
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x10], eax
sete al
test eax, ecx
je 0x5a6d48
mov ecx, edi
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x38]
neg ecx
and ecx, 0x1f
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [ecx + edx*2 + 1]
add edi, eax
mov al, byte [ecx + edx*2]
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x48], edi
mov byte [ecx], al
inc ecx
mov dword [esp + 0x34], ecx
jmp 0x5a6c80
mov esi, dword [esp + 0x24]
mov ecx, esi
sub ecx, dword [esp + 0x34]
cmp dword [esp + 0x34], esi
mov dword [esp + 0x2c], 0
cmova ecx, dword [esp + 0x2c]
mov dword [esp + 0x80], 0
mov dword [esp + 0x2c], ecx
test ecx, ecx
je 0x5a6dcf
mov eax, dword [esp + 0x38]
mov ebx, dword [esp + 0x14]
neg eax
mov esi, dword [esp + 0x34]
and eax, 0x1f
mov dword [esp + 0x84], eax
mov edi, edi
mov ecx, edi
lea esi, [esi + 1]
and ecx, 0x1f
shl edx, cl
mov ecx, eax
shr edx, cl
movzx eax, byte [ebx + edx*2 + 1]
add edi, eax
mov al, byte [ebx + edx*2]
mov edx, dword [esp + 0x44]
mov byte [esi - 1], al
mov eax, dword [esp + 0x80]
inc eax
cmp eax, dword [esp + 0x2c]
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x84]
jb 0x5a6d90
mov dword [esp + 0x48], edi
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x74]
mov ecx, dword [esp + 0x30]
jmp 0x5a6de0
cmp edi, 0x20
jbe 0x5a6df6
mov edx, dword [esp + 0x6c]
mov dword [esp + 0x10], 3
jmp 0x5a6e66
cmp esi, dword [esp + 0x7c]
jb 0x5a6e10
mov eax, edi
mov dword [esp + 0x10], 0
shr eax, 3
sub esi, eax
and edi, 7
jmp 0x5a6e54
cmp esi, dword [esp + 0x78]
jne 0x5a6e28
mov edx, dword [esp + 0x6c]
cmp edi, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
jmp 0x5a6e66
mov edx, edi
mov dword [esp + 0x10], 0
shr edx, 3
mov eax, esi
sub eax, edx
cmp eax, dword [esp + 0x78]
jae 0x5a6e4d
mov edx, esi
mov dword [esp + 0x10], 1
sub edx, dword [esp + 0x78]
imul eax, edx, 0xfffffff8
sub esi, edx
add edi, eax
mov edx, dword [esi]
mov dword [esp + 0x6c], edx
mov dword [esp + 0x70], edi
mov dword [esp + 0x18], edi
mov dword [esp + 0x74], esi
mov eax, dword [esp + 0x40]
add eax, 0xfffffffd
cmp ecx, eax
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x10], eax
sete al
test eax, ecx
je 0x5a6ef8
mov ecx, dword [esp + 0x18]
mov edi, dword [esp + 0x38]
and ecx, 0x1f
mov eax, dword [esp + 0x14]
neg edi
shl edx, cl
and edi, 0x1f
mov ecx, edi
shr edx, cl
mov ecx, dword [esp + 0x18]
movzx eax, byte [eax + edx*2 + 1]
add ecx, eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x18], ecx
and ecx, 0x1f
movzx eax, byte [eax + edx*2]
mov edx, dword [esp + 0x30]
mov byte [edx], al
inc edx
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x6c]
shl edx, cl
mov ecx, edi
mov edi, dword [esp + 0x18]
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [ecx + edx*2 + 1]
add edi, eax
movzx eax, byte [ecx + edx*2]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x18], edi
mov dword [esp + 0x70], edi
mov byte [ecx], al
inc ecx
mov dword [esp + 0x30], ecx
jmp 0x5a6de0
mov esi, dword [esp + 0x9c]
mov ebx, dword [esp + 0x74]
mov ecx, dword [esp + 0x30]
cmp edi, 0x20
jbe 0x5a6f1d
mov edx, dword [esp + 0x6c]
mov dword [esp + 0x10], 3
jmp 0x5a6f89
cmp ebx, dword [esp + 0x7c]
jb 0x5a6f37
mov eax, edi
mov dword [esp + 0x10], 0
shr eax, 3
sub ebx, eax
and edi, 7
jmp 0x5a6f7b
cmp ebx, dword [esp + 0x78]
jne 0x5a6f4f
mov edx, dword [esp + 0x6c]
cmp edi, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
jmp 0x5a6f89
mov edx, edi
mov dword [esp + 0x10], 0
shr edx, 3
mov eax, ebx
sub eax, edx
cmp eax, dword [esp + 0x78]
jae 0x5a6f74
mov edx, ebx
mov dword [esp + 0x10], 1
sub edx, dword [esp + 0x78]
imul eax, edx, 0xfffffff8
sub ebx, edx
add edi, eax
mov edx, dword [ebx]
mov dword [esp + 0x6c], edx
mov dword [esp + 0x70], edi
mov dword [esp + 0x74], ebx
cmp ecx, dword [esp + 0x40]
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x10], eax
sete al
test eax, ecx
je 0x5a6fd2
mov ecx, edi
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x38]
neg ecx
and ecx, 0x1f
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [ecx + edx*2 + 1]
add edi, eax
mov al, byte [ecx + edx*2]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x70], edi
mov byte [ecx], al
inc ecx
mov dword [esp + 0x30], ecx
jmp 0x5a6f07
mov ebx, dword [esp + 0x40]
mov ecx, ebx
sub ecx, dword [esp + 0x30]
cmp dword [esp + 0x30], ebx
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x2c], 0
cmova ecx, dword [esp + 0x2c]
mov dword [esp + 0x24], 0
mov dword [esp + 0x2c], ecx
test ecx, ecx
je 0x5a7064
mov eax, dword [esp + 0x38]
mov esi, dword [esp + 0x14]
neg eax
mov ebx, dword [esp + 0x30]
and eax, 0x1f
mov dword [esp + 0x84], eax
lea esp, [esp]
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 + 1]
add edi, eax
mov al, byte [esi + edx*2]
mov edx, dword [esp + 0x6c]
mov byte [ebx - 1], al
mov eax, dword [esp + 0x24]
inc eax
cmp eax, dword [esp + 0x2c]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x84]
jb 0x5a7020
mov esi, dword [esp + 0x9c]
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x70], edi
mov ecx, dword [esp + 0xa0]
add ecx, 0xfffffffd
mov dword [esp + 0x24], ecx
mov edi, dword [esp + 0x94]
mov edx, dword [esp + 0x90]
cmp ebx, 0x20
jbe 0x5a7099
mov edi, dword [esp + 0x88]
mov dword [esp + 0x40], 3
jmp 0x5a7112
cmp edx, dword [esp + 0x98]
jb 0x5a70b6
mov eax, ebx
mov dword [esp + 0x40], 0
shr eax, 3
sub edx, eax
and ebx, 7
jmp 0x5a70fb
cmp edx, edi
jne 0x5a70cf
mov edi, dword [esp + 0x88]
cmp ebx, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x40], eax
jmp 0x5a7112
mov ecx, ebx
mov dword [esp + 0x40], 0
shr ecx, 3
mov eax, edx
sub eax, ecx
cmp eax, edi
jae 0x5a70f0
mov ecx, edx
mov dword [esp + 0x40], 1
sub ecx, edi
imul eax, ecx, 0xfffffff8
sub edx, ecx
mov ecx, dword [esp + 0x24]
add ebx, eax
mov edi, dword [edx]
mov dword [esp + 0x88], edi
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x90], edx
cmp esi, ecx
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x40], eax
sete al
test eax, ecx
je 0x5a7188
mov edi, dword [esp + 0x38]
mov ecx, ebx
mov edx, dword [esp + 0x88]
and ecx, 0x1f
shl edx, cl
neg edi
and edi, 0x1f
mov ecx, edi
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [ecx + edx*2 + 1]
add ebx, eax
movzx eax, byte [ecx + edx*2]
mov edx, dword [esp + 0x88]
mov ecx, ebx
and ecx, 0x1f
mov byte [esi], al
shl edx, cl
mov ecx, edi
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [ecx + edx*2 + 1]
add ebx, eax
movzx eax, byte [ecx + edx*2]
mov ecx, dword [esp + 0x24]
mov byte [esi + 1], al
add esi, 2
mov dword [esp + 0x8c], ebx
jmp 0x5a7072
cmp ebx, 0x20
jbe 0x5a7197
mov edx, 3
jmp 0x5a721a
cmp edx, dword [esp + 0x98]
jb 0x5a71b7
mov eax, ebx
and ebx, 7
shr eax, 3
sub edx, eax
mov dword [esp + 0x90], edx
mov edi, dword [edx]
xor edx, edx
jmp 0x5a720c
cmp edx, dword [esp + 0x94]
jne 0x5a71d0
cmp ebx, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x24], eax
mov edx, eax
jmp 0x5a721a
mov edi, dword [esp + 0x94]
mov ecx, ebx
shr ecx, 3
mov eax, edx
sub eax, ecx
mov dword [esp + 0x24], 0
cmp eax, edi
jae 0x5a71f8
mov ecx, edx
mov dword [esp + 0x24], 1
sub ecx, edi
sub edx, ecx
imul eax, ecx, 0xfffffff8
mov dword [esp + 0x90], edx
mov edi, dword [edx]
mov edx, dword [esp + 0x24]
add ebx, eax
mov dword [esp + 0x88], edi
mov dword [esp + 0x8c], ebx
cmp esi, dword [esp + 0xa0]
sbb ecx, ecx
xor eax, eax
neg ecx
test edx, edx
sete al
test eax, ecx
je 0x5a7268
mov ecx, ebx
mov edx, edi
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x38]
neg ecx
and ecx, 0x1f
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [ecx + edx*2 + 1]
add ebx, eax
mov al, byte [ecx + edx*2]
mov edx, dword [esp + 0x90]
mov byte [esi], al
inc esi
mov dword [esp + 0x8c], ebx
jmp 0x5a7188
mov eax, dword [esp + 0xa0]
xor edx, edx
sub eax, esi
mov dword [esp + 0x24], 0
cmp esi, dword [esp + 0xa0]
cmova eax, edx
mov dword [esp + 0x2c], eax
test eax, eax
je 0x5a72db
mov eax, dword [esp + 0x38]
neg eax
and eax, 0x1f
mov dword [esp + 0x38], eax
lea ebx, [ebx]
mov ecx, ebx
lea esi, [esi + 1]
and ecx, 0x1f
mov edx, edi
shl edx, cl
mov ecx, eax
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [ecx + edx*2 + 1]
add ebx, eax
mov al, byte [ecx + edx*2]
mov byte [esi - 1], al
mov eax, dword [esp + 0x24]
inc eax
cmp eax, dword [esp + 0x2c]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x38]
jb 0x5a72a0
mov dword [esp + 0x8c], ebx
lea ecx, [esp + 0x88]
call fcn.005a5dc0
lea ecx, [esp + 0x6c]
mov edx, eax
call fcn.005a5dc0
lea ecx, [esp + 0x44]
and edx, eax
call fcn.005a5dc0
lea ecx, [esp + 0x58]
and edx, eax
call fcn.005a5dc0
test eax, edx
mov ecx, 0xffffffec
mov eax, dword [esp + 0xa4]
cmove eax, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret