Function at 0x101569f0
Capabilities:
Inspect section memory permissions

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
push ebx
push esi
push edi
mov edi, edx
mov dword [ebp - 0x10], 0
mov eax, ecx
mov dword [ebp - 0xc], edi
mov dword [ebp - 0x18], eax
cmp dword [edi], 0
jle 0x10156af0
mov ecx, dword [ebp + 8]
add edi, 0x6c
sub ecx, edx
mov dword [ebp - 0x14], ecx
mov edi, edi
movzx eax, word [ecx + edi]
mov bh, byte [ecx + edi]
and ax, 0xffc0
movzx esi, ax
and bh, 0x3f
lea eax, [ebp - 0x1c]
sub bh, 0x22
push eax
lea eax, [ebp - 0x20]
mov dl, bh
push eax
sub esp, 8
mov ecx, esi
call fcn.101567e0
mov dl, byte [edi]
lea eax, [ebp - 1]
movzx ecx, word [edi]
and dl, 0x3f
push eax
lea eax, [ebp - 8]
sub dl, 0xf
push eax
push dword [ebp - 0x1c]
and ecx, 0xffffffc0
push dword [ebp - 0x20]
call fcn.10156880
mov ax, word [ebp - 8]
mov ecx, 0x7fdf
mov bl, byte [ebp - 1]
add esp, 0x20
cmp ax, cx
jl 0x10156a89
sar ax, 1
inc bl
mov word [ebp - 8], ax
mov byte [ebp - 1], bl
movsx ecx, ax
movsx eax, si
imul ecx, eax
movsx dx, bl
add dx, 0x10
add ecx, ecx
sar ecx, 0x10
movzx esi, cx
mov ecx, dword [ebp - 8]
lea eax, [ecx - 0x20]
xor dx, ax
lea eax, [ecx + 0x20]
and dx, 0x3f
mov cl, bl
xor dx, ax
add cl, bh
mov eax, dword [ebp - 0x14]
add ecx, 0x10
mov word [eax + edi], dx
lea eax, [esi - 0x20]
xor ecx, eax
lea eax, [esi + 0x20]
mov esi, dword [ebp - 0x10]
and ecx, 0x3f
xor ecx, eax
inc esi
mov eax, dword [ebp - 0xc]
mov word [edi], cx
add edi, 2
mov ecx, dword [ebp - 0x14]
mov dword [ebp - 0x10], esi
cmp esi, dword [eax]
jl 0x10156a20
mov edi, eax
mov eax, dword [ebp - 0x18]
movzx ecx, byte [eax + 0x1e]
movzx eax, byte [edi + 0x12]
imul ecx, eax
mov dword [ebp - 0x10], 0
test ecx, ecx
jle 0x10156c72
mov ecx, dword [ebp + 8]
lea edx, [edi + 0x24c]
sub ecx, edi
mov dword [ebp - 0xc], edx
mov dword [ebp + 8], ecx
jmp 0x10156b20
mov al, 6
mov ebx, 1
sub al, byte [edx]
mov byte [ebp - 2], al
lea eax, [edx + ecx]
mov dword [ebp - 0x20], eax
mov ecx, 0x1f
mov al, byte [eax]
sub al, 0xc
mov byte [ebp - 3], al
inc al
movsx esi, al
mov byte [ebp - 1], al
dec esi
mov eax, esi
cdq
xor eax, edx
sub eax, edx
mov edx, 0x40000000
cmp eax, ecx
cmovl ecx, eax
movzx eax, byte [ebp - 1]
sar edx, cl
test esi, esi
mov ecx, edx
cmovg ebx, eax
sar ecx, 1
add ecx, 0x20000000
mov dword [ebp - 0x14], ebx
lea eax, [ecx + 0x3fffffff]
cmp eax, 0x7ffffffd
ja 0x10156b85
lea ecx, [edx + 0x40000000]
jmp 0x10156b8b
add bl, 1
mov dword [ebp - 0x14], ebx
sar ecx, 0x10
movzx eax, cx
cwde
mov ecx, eax
mov dword [ebp - 0x1c], 0
shl ecx, 0x10
bsr edx, ecx
setne cl
test cl, cl
je 0x10156bb1
mov ebx, 0x1f
sub ebx, edx
jmp 0x10156bb6
mov ebx, 0x20
mov ecx, 6
sub ecx, ebx
jns 0x10156bc5
neg ecx
shl eax, cl
jmp 0x10156bc7
sar eax, cl
and eax, 0x1ff
dec eax
sar eax, 1
js 0x10156be1
movzx eax, word [eax*2 + 0x103d45c8]
movsx edx, ax
shl edx, 0xe
jmp 0x10156be6
mov edx, 0x20000000
bsr esi, edx
mov dword [ebp - 0x1c], 0
setne al
test al, al
je 0x10156c00
mov ecx, 0x1f
sub ecx, esi
jmp 0x10156c05
mov ecx, 0x20
mov esi, dword [ebp - 0x20]
dec ecx
shl edx, cl
sub bl, cl
sub bl, byte [ebp - 0x14]
sar edx, 0x10
add bl, 3
add bl, byte [ebp - 2]
movzx eax, dx
lea ecx, [eax - 0x20]
lea edx, [eax + 0x20]
movsx ax, bl
sub ax, 0x1a
xor ax, cx
and ax, 0x3f
xor ax, dx
mov word [esi], ax
mov al, bl
add al, byte [ebp - 3]
mov ebx, dword [ebp - 0x10]
sub eax, 0x1a
xor eax, ecx
inc ebx
and eax, 0x3f
mov dword [ebp - 0x10], ebx
xor eax, edx
mov edx, dword [ebp - 0xc]
mov word [edx], ax
add edx, 2
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0xc], edx
movzx ecx, byte [eax + 0x1e]
movzx eax, byte [edi + 0x12]
imul ecx, eax
cmp ebx, ecx
mov ecx, dword [ebp + 8]
jl 0x10156b20
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret