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

Disassembly:
mov edx, dword [esp + 0x10]
sub esp, 0x90
cmp edx, 0xa
jae 0x53703b
mov eax, 0xffffffec
add esp, 0x90
ret
mov eax, dword [esp + 0x98]
cmp eax, 6
jb 0x53702f
mov ecx, dword [esp + 0xa4]
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0xa4]
mov ebp, edx
add eax, edi
mov dword [esp + 0x10], 1
mov dword [esp + 0x94], eax
lea eax, [ecx + 4]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0xac]
movzx ebx, word [eax + 2]
movzx esi, word [eax]
mov dword [esp + 0x88], ebx
movzx ebx, word [eax + 4]
add eax, 6
mov dword [esp + 0x14], eax
sub ebp, ebx
sub ebp, dword [esp + 0x88]
add eax, esi
mov dword [esp + 0x98], eax
sub ebp, esi
add eax, dword [esp + 0x88]
sub ebp, 6
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0xa8]
add eax, 3
mov dword [esp + 0x8c], ebx
shr eax, 2
mov dword [esp + 0x1c], esi
lea ebx, [eax + edi]
lea esi, [ebx + eax]
mov dword [esp + 0x84], ebx
add eax, esi
mov dword [esp + 0x24], esi
mov dword [esp + 0x2c], ebx
movzx ebx, byte [ecx + 2]
mov dword [esp + 0x28], esi
mov esi, eax
mov dword [esp + 0x9c], eax
mov dword [esp + 0x90], esi
mov dword [esp + 0x30], ebx
cmp ebp, edx
ja 0x5374ce
cmp eax, dword [esp + 0x94]
ja 0x5374ce
push dword [esp + 0x1c]
lea eax, [esp + 0x4c]
push dword [esp + 0x18]
push eax
call fcn.00536840
add esp, 0xc
cmp eax, 0xffffff88
ja 0x538105
push dword [esp + 0x88]
lea eax, [esp + 0x74]
push dword [esp + 0x9c]
push eax
call fcn.00536840
add esp, 0xc
cmp eax, 0xffffff88
ja 0x538105
mov edi, dword [esp + 0x8c]
lea eax, [esp + 0x5c]
push edi
push dword [esp + 0x24]
push eax
call fcn.00536840
add esp, 0xc
cmp eax, 0xffffff88
ja 0x538105
mov eax, dword [esp + 0x20]
add eax, edi
push ebp
push eax
lea eax, [esp + 0x3c]
push eax
call fcn.00536840
add esp, 0xc
cmp eax, 0xffffff88
ja 0x538105
mov edx, dword [esp + 0x94]
mov ecx, esi
mov eax, edx
sub eax, ecx
cmp eax, 4
jb 0x53747d
lea eax, [edx - 3]
cmp ecx, eax
sbb eax, eax
neg eax
test al, 1
je 0x53747d
mov ecx, dword [esp + 0x4c]
neg ebx
mov eax, dword [esp + 0x74]
and ebx, 0x1f
mov ebp, dword [esp + 0x60]
mov edi, dword [esp + 0x3c]
mov dword [esp + 0x20], ebx
mov ebx, dword [esp + 0x38]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x14], eax
and ecx, 0x1f
mov edx, dword [esp + 0x48]
shl edx, cl
mov ecx, dword [esp + 0x20]
shr edx, cl
mov ecx, dword [esp + 0x18]
movzx eax, byte [ecx + edx*2]
add dword [esp + 0x1c], eax
movzx eax, byte [ecx + edx*2 + 1]
mov ecx, dword [esp + 0xa4]
mov edx, dword [esp + 0x70]
mov byte [ecx], al
inc ecx
mov dword [esp + 0xa4], ecx
mov ecx, dword [esp + 0x14]
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x20]
shr edx, cl
mov ecx, dword [esp + 0x18]
movzx eax, byte [ecx + edx*2]
add dword [esp + 0x14], eax
movzx eax, byte [ecx + edx*2 + 1]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x5c]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x2c], ecx
mov ecx, ebp
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x20]
shr edx, cl
mov ecx, dword [esp + 0x18]
movzx eax, byte [ecx + edx*2]
add ebp, eax
movzx eax, byte [ecx + edx*2 + 1]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x34]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x28], ecx
mov ecx, ebx
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x20]
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 ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x48]
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x20]
shr edx, cl
mov ecx, dword [esp + 0x1c]
mov byte [esi], al
mov eax, dword [esp + 0x18]
movzx eax, byte [eax + edx*2]
add ecx, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0xa4]
movzx eax, byte [eax + edx*2 + 1]
mov edx, dword [esp + 0x70]
mov byte [ecx], al
inc ecx
mov eax, dword [esp + 0x18]
mov dword [esp + 0xa4], ecx
mov ecx, dword [esp + 0x14]
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x20]
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [eax + edx*2]
add ecx, eax
mov dword [esp + 0x14], ecx
mov eax, dword [esp + 0x18]
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x2c]
movzx eax, byte [eax + edx*2 + 1]
mov edx, dword [esp + 0x5c]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x2c], ecx
mov ecx, ebp
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x20]
shr edx, cl
mov ecx, dword [esp + 0x18]
movzx eax, byte [ecx + edx*2]
add ebp, eax
movzx eax, byte [ecx + edx*2 + 1]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x34]
mov dword [esp + 0x60], ebp
mov byte [ecx], al
inc ecx
mov dword [esp + 0x28], ecx
mov ecx, ebx
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x20]
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 + 0x50]
mov byte [esi + 1], al
add esi, 2
mov dword [esp + 0x38], ebx
cmp edx, dword [esp + 0x58]
jae 0x53737a
mov ecx, 3
jmp 0x53739c
mov ecx, dword [esp + 0x1c]
mov eax, ecx
shr eax, 3
and ecx, 7
sub edx, eax
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x4c], ecx
xor ecx, ecx
mov dword [esp + 0x50], edx
mov eax, dword [edx]
mov dword [esp + 0x48], eax
mov edx, dword [esp + 0x10]
xor eax, eax
test ecx, ecx
mov ecx, dword [esp + 0x78]
sete al
and edx, eax
mov dword [esp + 0x10], edx
cmp ecx, dword [esp + 0x80]
jae 0x5373c1
mov ecx, 3
jmp 0x5373e7
mov edx, dword [esp + 0x14]
mov eax, edx
shr eax, 3
and edx, 7
sub ecx, eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x78], ecx
mov dword [esp + 0x74], edx
mov edx, dword [esp + 0x10]
mov eax, dword [ecx]
xor ecx, ecx
mov dword [esp + 0x70], eax
xor eax, eax
test ecx, ecx
mov ecx, dword [esp + 0x64]
sete al
and edx, eax
cmp ecx, dword [esp + 0x6c]
jae 0x537401
mov ecx, 3
jmp 0x53741b
mov eax, ebp
and ebp, 7
shr eax, 3
sub ecx, eax
mov dword [esp + 0x60], ebp
mov dword [esp + 0x64], ecx
mov eax, dword [ecx]
xor ecx, ecx
mov dword [esp + 0x5c], eax
xor eax, eax
test ecx, ecx
sete al
and edx, eax
cmp edi, dword [esp + 0x44]
jae 0x537431
mov ecx, 3
jmp 0x537447
mov eax, ebx
and ebx, 7
shr eax, 3
sub edi, eax
mov dword [esp + 0x38], ebx
xor ecx, ecx
mov eax, dword [edi]
mov dword [esp + 0x34], eax
xor eax, eax
test ecx, ecx
mov ecx, dword [esp + 0x1c]
sete al
and edx, eax
mov eax, dword [esp + 0x94]
add eax, 0xfffffffd
mov dword [esp + 0x10], edx
cmp esi, eax
sbb eax, eax
neg eax
test edx, eax
jne 0x5371e3
mov dword [esp + 0x3c], edi
mov dword [esp + 0x90], esi
jmp 0x537495
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x74]
mov ebp, dword [esp + 0x60]
mov ebx, dword [esp + 0x38]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x14], eax
mov edx, dword [esp + 0xa4]
mov dword [esp + 0x20], ebx
mov dword [esp + 0x88], ebp
cmp edx, dword [esp + 0x84]
ja 0x5374ce
mov eax, dword [esp + 0x24]
cmp dword [esp + 0x2c], eax
ja 0x5374ce
mov eax, dword [esp + 0x9c]
cmp dword [esp + 0x28], eax
mov eax, dword [esp + 0x84]
jbe 0x5374de
pop edi
pop esi
pop ebp
mov eax, 0xffffffec
pop ebx
add esp, 0x90
ret
sub eax, edx
cmp eax, 3
mov eax, dword [esp + 0x54]
jle 0x537628
nop dword [eax]
cmp ecx, 0x20
jbe 0x53750c
mov edx, 0x57b7b0
mov dword [esp + 0x10], 3
mov dword [esp + 0x50], edx
mov edx, dword [esp + 0x48]
jmp 0x53757e
mov edx, dword [esp + 0x50]
cmp edx, dword [esp + 0x58]
jb 0x53752a
mov eax, ecx
mov dword [esp + 0x10], 0
shr eax, 3
sub edx, eax
and ecx, 7
jmp 0x53756c
cmp edx, eax
jne 0x537540
mov edx, dword [esp + 0x48]
cmp ecx, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
jmp 0x53757e
mov edi, ecx
mov dword [esp + 0x10], 0
shr edi, 3
mov eax, edx
sub eax, edi
cmp eax, dword [esp + 0x54]
jae 0x537565
mov edi, edx
mov dword [esp + 0x10], 1
sub edi, dword [esp + 0x54]
imul eax, edi, 0xfffffff8
sub edx, edi
add ecx, eax
mov dword [esp + 0x50], edx
mov edx, dword [edx]
mov dword [esp + 0x48], edx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x1c], ecx
mov eax, dword [esp + 0x84]
add eax, 0xfffffffd
cmp dword [esp + 0xa4], eax
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x10], eax
sete al
test eax, ecx
mov ecx, dword [esp + 0x1c]
je 0x53768c
mov edi, dword [esp + 0x30]
and ecx, 0x1f
mov eax, dword [esp + 0x18]
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]
add ecx, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x1c], ecx
and ecx, 0x1f
movzx eax, byte [eax + edx*2 + 1]
mov edx, dword [esp + 0xa4]
mov byte [edx], al
inc edx
mov dword [esp + 0xa4], edx
mov edx, dword [esp + 0x48]
shl edx, cl
mov ecx, edi
mov edi, dword [esp + 0x18]
shr edx, cl
mov ecx, dword [esp + 0x1c]
movzx eax, byte [edi + edx*2]
add ecx, eax
movzx eax, byte [edi + edx*2 + 1]
mov edx, dword [esp + 0xa4]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x4c], ecx
mov byte [edx], al
inc edx
mov eax, dword [esp + 0x54]
mov dword [esp + 0xa4], edx
jmp 0x5374f0
cmp ecx, 0x20
jbe 0x537638
mov edx, 0x57b7b0
mov dword [esp + 0x50], edx
jmp 0x537690
mov edx, dword [esp + 0x50]
cmp edx, dword [esp + 0x58]
jb 0x53764e
mov eax, ecx
shr eax, 3
sub edx, eax
and ecx, 7
jmp 0x53767a
cmp edx, eax
je 0x537690
mov eax, ecx
shr eax, 3
mov dword [esp + 0x10], eax
mov eax, edx
sub eax, dword [esp + 0x10]
cmp eax, dword [esp + 0x54]
jae 0x53766f
mov eax, edx
sub eax, dword [esp + 0x54]
jmp 0x537673
mov eax, dword [esp + 0x10]
sub edx, eax
imul eax, eax, 0xfffffff8
add ecx, eax
mov eax, dword [edx]
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x50], edx
mov eax, dword [esp + 0x54]
mov edi, dword [esp + 0x50]
mov esi, dword [esp + 0x48]
mov edx, dword [esp + 0xa4]
mov ebp, dword [esp + 0x18]
mov ebx, dword [esp + 0x30]
cmp ecx, 0x20
jbe 0x5376bb
mov edi, 0x57b7b0
mov dword [esp + 0x10], 3
jmp 0x537721
cmp edi, dword [esp + 0x58]
jb 0x5376d5
mov eax, ecx
mov dword [esp + 0x10], 0
shr eax, 3
sub edi, eax
and ecx, 7
jmp 0x537713
cmp edi, eax
jne 0x5376e7
cmp ecx, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
jmp 0x537725
mov esi, ecx
mov dword [esp + 0x10], 0
shr esi, 3
mov eax, edi
sub eax, esi
cmp eax, dword [esp + 0x54]
jae 0x53770c
mov esi, edi
mov dword [esp + 0x10], 1
sub esi, dword [esp + 0x54]
imul eax, esi, 0xfffffff8
sub edi, esi
add ecx, eax
mov esi, dword [edi]
mov dword [esp + 0x48], esi
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x50], edi
cmp edx, dword [esp + 0x84]
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x10], eax
sete al
test eax, ecx
je 0x537782
mov ecx, dword [esp + 0x1c]
mov edx, esi
and ecx, 0x1f
shl edx, cl
mov ecx, ebx
neg ecx
and ecx, 0x1f
shr edx, cl
mov ecx, dword [esp + 0x1c]
movzx eax, byte [ebp + edx*2]
add ecx, eax
mov al, byte [ebp + edx*2 + 1]
mov edx, dword [esp + 0xa4]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x4c], ecx
mov byte [edx], al
inc edx
mov eax, dword [esp + 0x54]
mov dword [esp + 0xa4], edx
jmp 0x5376a7
mov eax, dword [esp + 0x84]
xor esi, esi
sub eax, edx
mov dword [esp + 0x10], 0
cmp edx, dword [esp + 0x84]
cmova eax, esi
mov dword [esp + 0x8c], eax
test eax, eax
je 0x537802
mov edi, dword [esp + 0x1c]
mov eax, ebx
mov esi, dword [esp + 0x48]
neg eax
mov ebx, dword [esp + 0xa4]
and eax, 0x1f
mov dword [esp + 0x98], eax
mov ecx, edi
lea ebx, [ebx + 1]
and ecx, 0x1f
mov edx, esi
shl edx, cl
mov ecx, eax
shr edx, cl
movzx eax, byte [ebp + edx*2]
add edi, eax
mov al, byte [ebp + edx*2 + 1]
mov byte [ebx - 1], al
mov eax, dword [esp + 0x10]
inc eax
cmp eax, dword [esp + 0x8c]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x98]
jb 0x5377c7
mov dword [esp + 0x4c], edi
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x2c]
sub eax, ecx
cmp eax, 3
mov eax, dword [esp + 0x7c]
jle 0x53796b
nop dword [eax]
mov edx, dword [esp + 0x14]
cmp edx, 0x20
jbe 0x537843
mov ecx, 0x57b7b0
mov dword [esp + 0x10], 3
mov dword [esp + 0x78], ecx
mov ecx, dword [esp + 0x2c]
jmp 0x5378d3
mov edi, dword [esp + 0x78]
cmp edi, dword [esp + 0x80]
jb 0x53786e
mov eax, edx
mov dword [esp + 0x10], 0
shr eax, 3
sub edi, eax
and edx, 7
mov dword [esp + 0x78], edi
mov edi, dword [edi]
mov dword [esp + 0x70], edi
jmp 0x5378cb
cmp edi, eax
jne 0x537880
cmp edx, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
jmp 0x5378d3
mov eax, edx
mov dword [esp + 0x10], 0
shr eax, 3
mov dword [esp + 0x84], eax
mov eax, edi
sub eax, dword [esp + 0x84]
cmp eax, dword [esp + 0x7c]
jae 0x5378b3
mov eax, edi
mov dword [esp + 0x10], 1
sub eax, dword [esp + 0x7c]
jmp 0x5378ba
mov eax, dword [esp + 0x84]
sub edi, eax
imul eax, eax, 0xfffffff8
mov dword [esp + 0x78], edi
add edx, eax
mov eax, dword [edi]
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], edx
mov dword [esp + 0x14], edx
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 0x5379d6
mov edi, dword [esp + 0x30]
mov ecx, edx
mov edx, dword [esp + 0x70]
and ecx, 0x1f
mov eax, dword [esp + 0x18]
neg edi
shl edx, cl
and edi, 0x1f
mov ecx, edi
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [eax + edx*2]
add ecx, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x14], ecx
and ecx, 0x1f
movzx eax, byte [eax + edx*2 + 1]
mov edx, dword [esp + 0x2c]
mov byte [edx], al
inc edx
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x70]
shl edx, cl
mov ecx, edi
mov edi, dword [esp + 0x18]
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [edi + edx*2]
add ecx, eax
movzx eax, byte [edi + edx*2 + 1]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x2c]
mov byte [ecx], al
inc ecx
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x2c], ecx
jmp 0x537820
mov edx, dword [esp + 0x14]
cmp edx, 0x20
jbe 0x53797f
mov ecx, 0x57b7b0
mov dword [esp + 0x78], ecx
jmp 0x5379da
mov ecx, dword [esp + 0x78]
cmp ecx, dword [esp + 0x80]
jb 0x537998
mov eax, edx
shr eax, 3
sub ecx, eax
and edx, 7
jmp 0x5379c4
cmp ecx, eax
je 0x5379da
mov eax, edx
shr eax, 3
mov dword [esp + 0x10], eax
mov eax, ecx
sub eax, dword [esp + 0x10]
cmp eax, dword [esp + 0x7c]
jae 0x5379b9
mov eax, ecx
sub eax, dword [esp + 0x7c]
jmp 0x5379bd
mov eax, dword [esp + 0x10]
sub ecx, eax
imul eax, eax, 0xfffffff8
add edx, eax
mov eax, dword [ecx]
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], edx
mov dword [esp + 0x14], edx
mov dword [esp + 0x78], ecx
mov eax, dword [esp + 0x7c]
mov edi, dword [esp + 0x78]
mov esi, dword [esp + 0x70]
mov ebp, dword [esp + 0x18]
mov ebx, dword [esp + 0x2c]
nop word [eax + eax]
cmp edx, 0x20
jbe 0x537a04
mov edi, 0x57b7b0
mov dword [esp + 0x10], 3
jmp 0x537a6d
cmp edi, dword [esp + 0x80]
jb 0x537a21
mov eax, edx
mov dword [esp + 0x10], 0
shr eax, 3
sub edi, eax
and edx, 7
jmp 0x537a5f
cmp edi, eax
jne 0x537a33
cmp edx, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
jmp 0x537a71
mov esi, dword [esp + 0x7c]
mov ecx, edx
shr ecx, 3
mov eax, edi
sub eax, ecx
mov dword [esp + 0x10], 0
cmp eax, esi
jae 0x537a58
mov ecx, edi
mov dword [esp + 0x10], 1
sub ecx, esi
imul eax, ecx, 0xfffffff8
sub edi, ecx
add edx, eax
mov esi, dword [edi]
mov dword [esp + 0x70], esi
mov dword [esp + 0x74], edx
mov dword [esp + 0x14], edx
mov dword [esp + 0x78], edi
cmp ebx, dword [esp + 0x24]
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x10], eax
sete al
test eax, ecx
je 0x537abf
mov ecx, edx
mov edx, esi
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x30]
neg ecx
and ecx, 0x1f
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [ebp + edx*2]
add ecx, eax
mov al, byte [ebp + edx*2 + 1]
mov byte [ebx], al
mov edx, ecx
mov eax, dword [esp + 0x7c]
inc ebx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x74], ecx
jmp 0x5379f0
mov eax, dword [esp + 0x24]
xor esi, esi
mov ebp, dword [esp + 0x88]
sub eax, ebx
cmp ebx, dword [esp + 0x24]
mov dword [esp + 0x2c], ebx
cmova eax, esi
mov dword [esp + 0x8c], eax
test eax, eax
je 0x537b45
mov eax, dword [esp + 0x30]
mov esi, dword [esp + 0x70]
neg eax
mov ebx, dword [esp + 0x18]
and eax, 0x1f
mov ebp, dword [esp + 0x2c]
xor edi, edi
mov dword [esp + 0x98], eax
mov ecx, edx
lea ebp, [ebp + 1]
and ecx, 0x1f
mov edx, esi
shl edx, cl
inc edi
mov ecx, eax
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [ebx + edx*2]
add ecx, eax
mov al, byte [ebx + edx*2 + 1]
mov edx, ecx
mov byte [ebp - 1], al
mov eax, dword [esp + 0x98]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x74], ecx
cmp edi, dword [esp + 0x8c]
jb 0x537b02
mov ebp, dword [esp + 0x88]
mov eax, dword [esp + 0x9c]
mov edx, dword [esp + 0x28]
sub eax, edx
cmp eax, 3
mov eax, dword [esp + 0x68]
jle 0x537c59
nop
cmp ebp, 0x20
jbe 0x537b79
mov edx, dword [esp + 0x5c]
mov ecx, 0x57b7b0
mov dword [esp + 0x64], ecx
mov edi, 3
jmp 0x537bd4
mov edx, dword [esp + 0x64]
cmp edx, dword [esp + 0x6c]
jb 0x537b91
mov eax, ebp
and ebp, 7
shr eax, 3
sub edx, eax
xor edi, edi
jmp 0x537bc6
cmp edx, eax
jne 0x537ba3
mov edx, dword [esp + 0x5c]
cmp ebp, 0x20
sbb edi, edi
add edi, 2
jmp 0x537bd4
mov ecx, ebp
mov eax, edx
shr ecx, 3
xor edi, edi
sub eax, ecx
cmp eax, dword [esp + 0x68]
jae 0x537bbf
mov ecx, edx
mov edi, 1
sub ecx, dword [esp + 0x68]
imul eax, ecx, 0xfffffff8
sub edx, ecx
add ebp, eax
mov dword [esp + 0x64], edx
mov edx, dword [edx]
mov dword [esp + 0x5c], edx
mov dword [esp + 0x60], ebp
mov eax, dword [esp + 0x9c]
add eax, 0xfffffffd
cmp dword [esp + 0x28], eax
sbb ecx, ecx
xor eax, eax
neg ecx
test edi, edi
sete al
test eax, ecx
je 0x537cc9
mov edi, dword [esp + 0x30]
mov ecx, ebp
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 ebp, eax
movzx eax, byte [ecx + edx*2 + 1]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x5c]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x28], ecx
mov ecx, ebp
and ecx, 0x1f
shl edx, cl
mov ecx, edi
shr edx, cl
mov ecx, dword [esp + 0x18]
movzx eax, byte [ecx + edx*2]
add ebp, eax
movzx eax, byte [ecx + edx*2 + 1]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x60], ebp
mov byte [edx], al
inc edx
mov eax, dword [esp + 0x68]
mov dword [esp + 0x28], edx
jmp 0x537b60
cmp ebp, 0x20
jbe 0x537c69
mov ecx, 0x57b7b0
mov dword [esp + 0x64], ecx
jmp 0x537cd1
mov ecx, dword [esp + 0x64]
cmp ecx, dword [esp + 0x6c]
jb 0x537c8d
mov eax, ebp
shr eax, 3
sub ecx, eax
and ebp, 7
mov dword [esp + 0x64], ecx
mov dword [esp + 0x60], ebp
mov eax, dword [ecx]
mov dword [esp + 0x5c], eax
jmp 0x537ccd
cmp ecx, eax
je 0x537cd1
mov eax, ebp
shr eax, 3
mov dword [esp + 0x24], eax
mov eax, ecx
sub eax, dword [esp + 0x24]
cmp eax, dword [esp + 0x68]
jae 0x537cae
mov eax, ecx
sub eax, dword [esp + 0x68]
jmp 0x537cb2
mov eax, dword [esp + 0x24]
sub ecx, eax
imul eax, eax, 0xfffffff8
mov dword [esp + 0x64], ecx
add ebp, eax
mov eax, dword [ecx]
mov dword [esp + 0x60], ebp
mov dword [esp + 0x5c], eax
jmp 0x537ccd
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x68]
mov edi, dword [esp + 0x64]
mov esi, dword [esp + 0x5c]
mov ebx, dword [esp + 0x30]
nop dword [eax]
cmp ebp, 0x20
jbe 0x537cf4
mov edi, 0x57b7b0
mov dword [esp + 0x24], 3
jmp 0x537d56
cmp edi, dword [esp + 0x6c]
jb 0x537d0e
mov eax, ebp
mov dword [esp + 0x24], 0
shr eax, 3
sub edi, eax
and ebp, 7
jmp 0x537d4c
cmp edi, eax
jne 0x537d20
cmp ebp, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x24], eax
jmp 0x537d5a
mov esi, dword [esp + 0x68]
mov ecx, ebp
shr ecx, 3
mov eax, edi
sub eax, ecx
mov dword [esp + 0x24], 0
cmp eax, esi
jae 0x537d45
mov ecx, edi
mov dword [esp + 0x24], 1
sub ecx, esi
imul eax, ecx, 0xfffffff8
sub edi, ecx
add ebp, eax
mov esi, dword [edi]
mov dword [esp + 0x5c], esi
mov dword [esp + 0x60], ebp
mov dword [esp + 0x64], edi
cmp edx, dword [esp + 0x9c]
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x24], eax
sete al
test eax, ecx
je 0x537daa
mov ecx, ebp
mov edx, esi
and ecx, 0x1f
shl edx, cl
mov ecx, ebx
neg ecx
and ecx, 0x1f
shr edx, cl
mov ecx, dword [esp + 0x18]
movzx eax, byte [ecx + edx*2]
add ebp, eax
mov al, byte [ecx + edx*2 + 1]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x60], ebp
mov byte [edx], al
inc edx
mov eax, dword [esp + 0x68]
mov dword [esp + 0x28], edx
jmp 0x537ce0
mov eax, dword [esp + 0x9c]
xor esi, esi
mov ebx, dword [esp + 0x20]
sub eax, edx
cmp edx, dword [esp + 0x9c]
mov edi, dword [esp + 0x3c]
cmova eax, esi
mov dword [esp + 0x24], 0
mov esi, dword [esp + 0x90]
mov dword [esp + 0x8c], eax
test eax, eax
je 0x537e49
mov eax, dword [esp + 0x30]
mov edi, dword [esp + 0x5c]
neg eax
mov ebx, dword [esp + 0x28]
and eax, 0x1f
mov esi, dword [esp + 0x18]
mov dword [esp + 0x98], eax
nop dword [eax]
mov ecx, ebp
lea ebx, [ebx + 1]
and ecx, 0x1f
mov edx, edi
shl edx, cl
mov ecx, eax
shr edx, cl
movzx eax, byte [esi + edx*2]
add ebp, eax
mov al, byte [esi + edx*2 + 1]
mov byte [ebx - 1], al
mov eax, dword [esp + 0x24]
inc eax
cmp eax, dword [esp + 0x8c]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x98]
jb 0x537e00
mov esi, dword [esp + 0x90]
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0x3c]
mov dword [esp + 0x60], ebp
mov eax, dword [esp + 0x94]
mov ecx, dword [esp + 0x40]
sub eax, esi
cmp eax, 3
jle 0x537f40
mov ebp, dword [esp + 0x34]
cmp ebx, 0x20
jbe 0x537e74
mov edi, 0x57b7b0
mov edx, 3
jmp 0x537ec3
cmp edi, dword [esp + 0x44]
jb 0x537e88
mov eax, ebx
and ebx, 7
shr eax, 3
sub edi, eax
xor edx, edx
jmp 0x537eb9
cmp edi, ecx
jne 0x537e96
cmp ebx, 0x20
sbb edx, edx
add edx, 2
jmp 0x537ec7
mov ebp, dword [esp + 0x40]
mov ecx, ebx
shr ecx, 3
mov eax, edi
sub eax, ecx
xor edx, edx
cmp eax, ebp
jae 0x537eb2
mov ecx, edi
mov edx, 1
sub ecx, ebp
imul eax, ecx, 0xfffffff8
sub edi, ecx
add ebx, eax
mov ebp, dword [edi]
mov dword [esp + 0x34], ebp
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], edi
mov eax, dword [esp + 0x94]
add eax, 0xfffffffd
cmp esi, eax
sbb ecx, ecx
xor eax, eax
neg ecx
test edx, edx
sete al
test eax, ecx
je 0x537fa6
mov edi, dword [esp + 0x30]
mov ecx, ebx
and ecx, 0x1f
neg edi
and edi, 0x1f
mov edx, ebp
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 ecx, ebx
mov byte [esi], al
and ecx, 0x1f
mov edx, ebp
shl edx, cl
mov ecx, edi
mov edi, dword [esp + 0x3c]
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 ecx, dword [esp + 0x40]
mov byte [esi + 1], al
add esi, 2
mov dword [esp + 0x38], ebx
jmp 0x537e63
mov eax, dword [esp + 0x44]
cmp ebx, 0x20
jbe 0x537f54
mov edi, 0x57b7b0
mov dword [esp + 0x3c], edi
jmp 0x537fae
cmp edi, eax
jb 0x537f76
mov eax, ebx
shr eax, 3
sub edi, eax
mov eax, dword [esp + 0x44]
and ebx, 7
mov dword [esp + 0x3c], edi
mov dword [esp + 0x38], ebx
mov ebp, dword [edi]
mov dword [esp + 0x34], ebp
jmp 0x537fb2
cmp edi, ecx
je 0x537fae
mov edx, ebx
mov eax, edi
shr edx, 3
sub eax, edx
cmp eax, ecx
jae 0x537f8b
mov edx, edi
sub edx, ecx
imul eax, edx, 0xfffffff8
sub edi, edx
mov dword [esp + 0x3c], edi
mov ebp, dword [edi]
add ebx, eax
mov dword [esp + 0x34], ebp
mov eax, dword [esp + 0x44]
mov dword [esp + 0x38], ebx
jmp 0x537fb2
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x44]
mov ebp, dword [esp + 0x34]
cmp ebx, 0x20
jbe 0x537fc3
mov edi, 0x57b7b0
mov edx, 3
jmp 0x538010
cmp edi, eax
jb 0x537fd5
mov eax, ebx
and ebx, 7
shr eax, 3
sub edi, eax
xor edx, edx
jmp 0x538006
cmp edi, ecx
jne 0x537fe3
cmp ebx, 0x20
sbb edx, edx
add edx, 2
jmp 0x538014
mov ebp, dword [esp + 0x40]
mov ecx, ebx
shr ecx, 3
mov eax, edi
sub eax, ecx
xor edx, edx
cmp eax, ebp
jae 0x537fff
mov ecx, edi
mov edx, 1
sub ecx, ebp
imul eax, ecx, 0xfffffff8
sub edi, ecx
add ebx, eax
mov ebp, dword [edi]
mov dword [esp + 0x34], ebp
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], edi
cmp esi, dword [esp + 0x94]
sbb ecx, ecx
xor eax, eax
neg ecx
test edx, edx
sete al
test eax, ecx
je 0x538060
mov ecx, ebx
mov edx, ebp
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x30]
neg ecx
and ecx, 0x1f
shr edx, cl
mov ecx, dword [esp + 0x18]
movzx eax, byte [ecx + edx*2]
add ebx, eax
mov al, byte [ecx + edx*2 + 1]
mov ecx, dword [esp + 0x40]
mov byte [esi], al
inc esi
mov eax, dword [esp + 0x44]
mov dword [esp + 0x38], ebx
jmp 0x537fb2
mov eax, dword [esp + 0x94]
xor edx, edx
sub eax, esi
xor edi, edi
cmp esi, dword [esp + 0x94]
cmova eax, edx
mov dword [esp + 0x8c], eax
test eax, eax
je 0x5380c3
mov eax, dword [esp + 0x30]
neg eax
and eax, 0x1f
mov dword [esp + 0x30], eax
nop
mov ecx, ebx
lea esi, [esi + 1]
and ecx, 0x1f
mov edx, ebp
shl edx, cl
inc edi
mov ecx, eax
shr edx, cl
mov ecx, dword [esp + 0x18]
movzx eax, byte [ecx + edx*2]
add ebx, eax
mov al, byte [ecx + edx*2 + 1]
mov byte [esi - 1], al
mov eax, dword [esp + 0x30]
cmp edi, dword [esp + 0x8c]
jb 0x538090
mov dword [esp + 0x38], ebx
lea eax, [esp + 0x34]
push eax
call fcn.0053ac50
mov edx, eax
lea eax, [esp + 0x60]
push eax
call fcn.0053ac50
and edx, eax
lea eax, [esp + 0x78]
push eax
call fcn.0053ac50
and edx, eax
lea eax, [esp + 0x54]
push eax
call fcn.0053ac50
add esp, 0x10
mov ecx, 0xffffffec
test eax, edx
mov eax, dword [esp + 0xa8]
cmove eax, ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x90
ret