Function at 0x478730
Capabilities:
Enumerate pe sections
Resolve function by parsing pe exports

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xb8
mov eax, dword [rcx + 8]
mov rdi, qword [rcx]
mov r8d, 1
mov r14, qword [rcx + 0x28]
mov rbp, qword [rcx + 0x10]
mov r15, rcx
mov r11d, r8d
sub eax, 5
add rax, rdi
mov r12d, dword [r14 + 0x3c]
mov rbx, rbp
mov qword [rsp], rax
mov eax, dword [rcx + 0x18]
mov ecx, dword [r14 + 0x70]
mov rsi, qword [r14 + 0x60]
mov r10d, r12d
sub edx, eax
sub eax, 0x101
shl r11d, cl
add rax, rbp
sub rbx, rdx
mov ecx, r11d
mov qword [rsp + 8], rax
mov eax, dword [r14 + 0x34]
sub ecx, 1
mov qword [rsp + 0x30], rbx
mov ebx, dword [r14 + 0x38]
mov dword [rsp + 0x10], ecx
mov ecx, dword [r14 + 0x74]
mov dword [rsp + 0x14], eax
mov rax, qword [r14 + 0x40]
mov dword [rsp + 0x40], ebx
mov edx, dword [r14 + 0x4c]
shl r8d, cl
mov rbx, qword [r14 + 0x68]
lea ecx, [r8 - 1]
mov r9, rax
mov qword [rsp + 0x18], rax
mov eax, dword [r14 + 0x48]
mov dword [rsp + 0x24], ecx
mov rcx, r9
neg rcx
and ecx, 0xf
cmp ecx, r12d
cmova ecx, r12d
sub r10d, ecx
mov r11d, ecx
mov dword [rsp + 0x28], ecx
lea ecx, [r10 - 0x10]
mov dword [rsp + 0x50], r10d
shr ecx, 4
add ecx, 1
mov dword [rsp + 0x4c], ecx
shl ecx, 4
mov r10d, ecx
mov dword [rsp + 0x48], ecx
lea ecx, [r12 - 1]
mov r13d, r10d
mov r10d, dword [rsp + 0x14]
mov r8d, ecx
mov dword [rsp + 0x20], ecx
mov qword [rsp + 0x38], r13
sub r8d, r11d
mov r13d, 1
add r10d, r12d
mov dword [rsp + 0x44], r8d
mov dword [rsp + 0x54], r10d
lea r10, [r9 + 0x10]
mov qword [rsp + 0x58], r10
mov ecx, dword [rsp + 0x20]
mov dword [rsp + 0x2c], r12d
mov qword [rsp + 0x60], rcx
add rcx, 1
mov qword [rsp + 0x68], rcx
mov ecx, r11d
add r9, rcx
add rcx, 1
mov qword [rsp + 0x70], r9
mov qword [rsp + 0x78], rcx
cmp edx, 0xe
ja 0x478897
movzx r8d, byte [rdi + 1]
movzx r9d, byte [rdi]
lea ecx, [rdx + 8]
add rdi, 2
shl r8d, cl
mov ecx, edx
add edx, 0x10
shl r9d, cl
add r8d, r9d
add eax, r8d
mov ecx, dword [rsp + 0x10]
and ecx, eax
jmp 0x4788ca
test r8b, 0x10
jne 0x478990
test r8b, 0x40
jne 0x478f50
mov r11d, r13d
movzx r8d, word [r10 + 2]
shl r11d, cl
mov ecx, r11d
sub ecx, 1
and ecx, eax
add rcx, r8
lea r10, [rsi + rcx*4]
movzx ecx, byte [r10 + 1]
shr eax, cl
sub edx, ecx
movzx ecx, byte [r10]
test ecx, ecx
mov r8d, ecx
jne 0x4788a0
movzx ecx, word [r10 + 2]
add rbp, 1
mov byte [rbp - 1], cl
cmp rdi, qword [rsp]
jae 0x4788ff
cmp rbp, qword [rsp + 8]
jb 0x478871
mov rbx, qword [rsp]
mov ecx, edx
and edx, 7
shr ecx, 3
mov r8d, 1
mov qword [r15 + 0x10], rbp
sub rdi, rcx
mov ecx, edx
shl r8d, cl
mov rdx, rbx
mov qword [r15], rdi
sub rdx, rdi
sub r8d, 1
and eax, r8d
lea r8d, [rdx + 5]
mov edx, ebx
sub edx, edi
add edx, 5
cmp rbx, rdi
mov rdi, qword [rsp + 8]
cmova edx, r8d
mov dword [r15 + 8], edx
mov r8, rdi
mov edx, edi
sub r8, rbp
sub edx, ebp
cmp rbp, rdi
lea r9d, [r8 + 0x101]
lea r8d, [rdx + 0x101]
cmovb r8d, r9d
mov dword [r15 + 0x18], r8d
mov dword [r14 + 0x48], eax
mov dword [r14 + 0x4c], ecx
add rsp, 0xb8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
and r8d, 0xf
movzx r10d, word [r10 + 2]
je 0x4789d3
movzx r9d, r8b
cmp r9d, edx
jbe 0x4789b7
movzx r11d, byte [rdi]
mov ecx, edx
add rdi, 1
add edx, 8
shl r11d, cl
add eax, r11d
mov ecx, r8d
mov r11d, r13d
sub edx, r9d
shl r11d, cl
mov ecx, r11d
sub ecx, 1
and ecx, eax
add r10d, ecx
mov ecx, r8d
shr eax, cl
cmp edx, 0xe
jbe 0x478f70
mov ecx, dword [rsp + 0x24]
and ecx, eax
jmp 0x478a04
and r8d, 0x40
jne 0x478fc0
mov r11d, r13d
movzx r8d, word [r9 + 2]
shl r11d, cl
mov ecx, r11d
sub ecx, 1
and ecx, eax
add rcx, r8
lea r9, [rbx + rcx*4]
movzx ecx, byte [r9 + 1]
shr eax, cl
sub edx, ecx
movzx ecx, byte [r9]
test cl, 0x10
mov r8d, ecx
je 0x4789e4
and r8d, 0xf
movzx r11d, word [r9 + 2]
movzx r9d, r8b
cmp r9d, edx
jbe 0x478a4d
movzx r12d, byte [rdi]
mov ecx, edx
shl r12d, cl
lea ecx, [rdx + 8]
add eax, r12d
cmp r9d, ecx
ja 0x4799ab
add rdi, 1
mov edx, ecx
mov ecx, r8d
mov r12d, r13d
sub edx, r9d
shl r12d, cl
mov ecx, r12d
sub ecx, 1
and ecx, eax
add ecx, r11d
mov r11d, ecx
mov dword [rsp + 0x90], ecx
mov ecx, r8d
shr eax, cl
mov rcx, rbp
sub rcx, qword [rsp + 0x30]
mov r9d, r11d
cmp r11d, ecx
jbe 0x478fd8
sub r9d, ecx
cmp dword [rsp + 0x40], r9d
mov ecx, r9d
jae 0x478aa4
mov r11d, dword [r14 + 0x1be0]
test r11d, r11d
jne 0x47a006
mov r9d, dword [rsp + 0x2c]
test r9d, r9d
jne 0x4790a7
mov r9d, dword [rsp + 0x14]
mov r12, qword [rsp + 0x18]
sub r9d, ecx
mov r8, r12
add r8, r9
cmp r10d, ecx
mov qword [rsp + 0x88], r9
jbe 0x479076
lea r9, [r12 + r9 + 0x10]
sub r10d, ecx
cmp rbp, r9
lea r9, [rbp + 0x10]
setae r12b
cmp r8, r9
setae r9b
or r12b, r9b
je 0x479ec5
cmp ecx, 0x16
jbe 0x479ec5
mov r9, r8
neg r9
and r9d, 0xf
mov dword [rsp + 0x80], r9d
je 0x479eae
lea r11, [r8 + 1]
movzx r12d, byte [r8]
cmp dword [rsp + 0x80], 1
lea r9, [rbp + 1]
mov qword [rsp + 0x98], r11
lea r11d, [rcx - 1]
mov byte [rbp], r12b
mov dword [rsp + 0x94], r11d
mov r12d, r11d
je 0x479fb7
movzx r12d, byte [r8 + 1]
cmp dword [rsp + 0x80], 2
lea r9, [rbp + 2]
lea r11, [r8 + 2]
mov byte [rbp + 1], r12b
lea r12d, [rcx - 2]
je 0x479e9d
movzx r12d, byte [r8 + 2]
cmp dword [rsp + 0x80], 3
lea r9, [rbp + 3]
lea r11, [r8 + 3]
mov byte [rbp + 2], r12b
lea r12d, [rcx - 3]
je 0x479e9d
movzx r12d, byte [r8 + 3]
cmp dword [rsp + 0x80], 4
lea r9, [rbp + 4]
lea r11, [r8 + 4]
mov byte [rbp + 3], r12b
lea r12d, [rcx - 4]
je 0x479e9d
movzx r12d, byte [r8 + 4]
cmp dword [rsp + 0x80], 5
lea r9, [rbp + 5]
lea r11, [r8 + 5]
mov byte [rbp + 4], r12b
lea r12d, [rcx - 5]
je 0x479e9d
movzx r12d, byte [r8 + 5]
cmp dword [rsp + 0x80], 6
lea r9, [rbp + 6]
lea r11, [r8 + 6]
mov byte [rbp + 5], r12b
lea r12d, [rcx - 6]
je 0x479e9d
movzx r12d, byte [r8 + 6]
cmp dword [rsp + 0x80], 7
lea r9, [rbp + 7]
lea r11, [r8 + 7]
mov byte [rbp + 6], r12b
lea r12d, [rcx - 7]
je 0x479e9d
movzx r12d, byte [r8 + 7]
cmp dword [rsp + 0x80], 8
lea r9, [rbp + 8]
lea r11, [r8 + 8]
mov byte [rbp + 7], r12b
lea r12d, [rcx - 8]
je 0x479e9d
movzx r12d, byte [r8 + 8]
cmp dword [rsp + 0x80], 9
lea r9, [rbp + 9]
lea r11, [r8 + 9]
mov byte [rbp + 8], r12b
lea r12d, [rcx - 9]
je 0x479e9d
movzx r12d, byte [r8 + 9]
cmp dword [rsp + 0x80], 0xa
lea r9, [rbp + 0xa]
lea r11, [r8 + 0xa]
mov byte [rbp + 9], r12b
lea r12d, [rcx - 0xa]
je 0x479e9d
movzx r12d, byte [r8 + 0xa]
cmp dword [rsp + 0x80], 0xb
lea r9, [rbp + 0xb]
lea r11, [r8 + 0xb]
mov byte [rbp + 0xa], r12b
lea r12d, [rcx - 0xb]
je 0x479e9d
movzx r12d, byte [r8 + 0xb]
cmp dword [rsp + 0x80], 0xc
lea r9, [rbp + 0xc]
lea r11, [r8 + 0xc]
mov byte [rbp + 0xb], r12b
lea r12d, [rcx - 0xc]
je 0x479e9d
movzx r12d, byte [r8 + 0xc]
cmp dword [rsp + 0x80], 0xd
lea r9, [rbp + 0xd]
lea r11, [r8 + 0xd]
mov byte [rbp + 0xc], r12b
lea r12d, [rcx - 0xd]
je 0x479e9d
movzx r12d, byte [r8 + 0xd]
cmp dword [rsp + 0x80], 0xf
lea r9, [rbp + 0xe]
lea r11, [r8 + 0xe]
mov byte [rbp + 0xd], r12b
lea r12d, [rcx - 0xe]
jne 0x479e9d
movzx r12d, byte [r8 + 0xe]
lea r9, [rbp + 0xf]
add r8, 0xf
mov byte [rbp + 0xe], r12b
lea r12d, [rcx - 0xf]
mov r11d, dword [rsp + 0x80]
mov qword [rsp + 0x98], r11
mov r11d, ecx
sub r11d, dword [rsp + 0x80]
lea ecx, [r11 - 0x10]
mov dword [rsp + 0xa8], r11d
shr ecx, 4
lea r11d, [rcx + 1]
mov dword [rsp + 0xa4], r11d
shl r11d, 4
mov dword [rsp + 0xa0], r11d
mov r11d, dword [rsp + 0x94]
sub r11d, dword [rsp + 0x80]
cmp r11d, 0xe
jbe 0x478e36
mov r11, qword [rsp + 0x98]
mov rcx, qword [rsp + 0x88]
mov dword [rsp + 0x80], 0
mov dword [rsp + 0xac], eax
add rcx, r11
add rcx, qword [rsp + 0x18]
mov qword [rsp + 0x98], rcx
lea rcx, [rbp + r11]
mov r11d, dword [rsp + 0x90]
mov qword [rsp + 0x88], rcx
xor ecx, ecx
mov rax, qword [rsp + 0x98]
add dword [rsp + 0x80], 1
movdqa xmm0, xmmword [rax + rcx]
mov rax, qword [rsp + 0x88]
movups xmmword [rax + rcx], xmm0
mov eax, dword [rsp + 0x80]
add rcx, 0x10
cmp dword [rsp + 0xa4], eax
ja 0x478dd0
mov dword [rsp + 0x90], r11d
mov r11d, dword [rsp + 0xa0]
mov eax, dword [rsp + 0xac]
mov ecx, r11d
sub r12d, r11d
add r9, rcx
add r8, rcx
cmp r11d, dword [rsp + 0xa8]
je 0x478f27
movzx ecx, byte [r8]
cmp r12d, 1
mov byte [r9], cl
je 0x478f27
movzx ecx, byte [r8 + 1]
cmp r12d, 2
mov byte [r9 + 1], cl
je 0x478f27
movzx ecx, byte [r8 + 2]
cmp r12d, 3
mov byte [r9 + 2], cl
je 0x478f27
movzx ecx, byte [r8 + 3]
cmp r12d, 4
mov byte [r9 + 3], cl
je 0x478f27
movzx ecx, byte [r8 + 4]
cmp r12d, 5
mov byte [r9 + 4], cl
je 0x478f27
movzx ecx, byte [r8 + 5]
cmp r12d, 6
mov byte [r9 + 5], cl
je 0x478f27
movzx ecx, byte [r8 + 6]
cmp r12d, 7
mov byte [r9 + 6], cl
je 0x478f27
movzx ecx, byte [r8 + 7]
cmp r12d, 8
mov byte [r9 + 7], cl
je 0x478f27
movzx ecx, byte [r8 + 8]
cmp r12d, 9
mov byte [r9 + 8], cl
je 0x478f27
movzx ecx, byte [r8 + 9]
cmp r12d, 0xa
mov byte [r9 + 9], cl
je 0x478f27
movzx ecx, byte [r8 + 0xa]
cmp r12d, 0xb
mov byte [r9 + 0xa], cl
je 0x478f27
movzx ecx, byte [r8 + 0xb]
cmp r12d, 0xc
mov byte [r9 + 0xb], cl
je 0x478f27
movzx ecx, byte [r8 + 0xc]
cmp r12d, 0xd
mov byte [r9 + 0xc], cl
je 0x478f27
movzx ecx, byte [r8 + 0xd]
cmp r12d, 0xe
mov byte [r9 + 0xd], cl
je 0x478f27
movzx ecx, byte [r8 + 0xe]
mov byte [r9 + 0xe], cl
mov ecx, dword [rsp + 0x94]
mov r11d, dword [rsp + 0x90]
lea rbp, [rbp + rcx + 1]
mov r8, rbp
sub r8, r11
jmp 0x479076
mov r9d, r8d
and r9d, 0x20
je 0x478fa0
mov dword [r14 + 8], 0x3f3f
jmp 0x4788ff
movzx r8d, byte [rdi + 1]
movzx r9d, byte [rdi]
lea ecx, [rdx + 8]
add rdi, 2
shl r8d, cl
mov ecx, edx
add edx, 0x10
shl r9d, cl
add r8d, r9d
add eax, r8d
jmp 0x4789dc
lea rbx, str.invalid_literal_length_code
mov qword [r15 + 0x20], rbx
mov dword [r14 + 8], 0x3f51
jmp 0x4788ff
lea rbx, str.invalid_distance_code
mov qword [r15 + 0x20], rbx
mov dword [r14 + 8], 0x3f51
jmp 0x4788ff
mov r11d, dword [rsp + 0x90]
mov rcx, rbp
sub rcx, r11
mov r11, rbp
jmp 0x478ff6
mov rcx, r8
mov r11, rbp
movzx r8d, byte [rcx]
sub r10d, 3
add rbp, 3
mov byte [rbp - 3], r8b
movzx r8d, byte [rcx + 1]
mov byte [rbp - 2], r8b
lea r8, [rcx + 3]
movzx r9d, byte [r8 - 1]
cmp r10d, 2
mov byte [rbp - 1], r9b
ja 0x478ff0
test r10d, r10d
je 0x4788ee
movzx r8d, byte [rcx + 3]
cmp r10d, 2
lea rbp, [r11 + 4]
mov byte [r11 + 3], r8b
jne 0x4788ee
movzx ecx, byte [rcx + 4]
lea rbp, [r11 + 5]
mov byte [r11 + 4], cl
jmp 0x4788ee
movzx ecx, byte [r8]
add r8, 3
add rbp, 3
sub r10d, 3
mov byte [rbp - 3], cl
movzx ecx, byte [r8 - 2]
mov byte [rbp - 2], cl
movzx ecx, byte [r8 - 1]
mov byte [rbp - 1], cl
cmp r10d, 2
ja 0x479053
test r10d, r10d
je 0x4788ee
movzx ecx, byte [r8]
cmp r10d, 2
mov byte [rbp], cl
jne 0x479ea5
movzx ecx, byte [r8 + 1]
add rbp, 2
mov byte [rbp - 1], cl
jmp 0x4788ee
mov r9d, dword [rsp + 0x2c]
cmp r9d, ecx
jae 0x4799c2
mov r8d, dword [rsp + 0x54]
mov r11, qword [rsp + 0x18]
sub r8d, ecx
sub ecx, r9d
add r11, r8
cmp r10d, ecx
mov qword [rsp + 0x98], r8
mov r12d, ecx
mov r8, r11
mov dword [rsp + 0x88], ecx
jbe 0x479076
sub r10d, ecx
mov r11, qword [rsp + 0x18]
mov rcx, qword [rsp + 0x98]
lea rcx, [r11 + rcx + 0x10]
cmp rbp, rcx
lea rcx, [rbp + 0x10]
setae r9b
cmp r8, rcx
setae cl
or r9b, cl
je 0x479f26
cmp r12d, 0x16
mov r11d, r12d
jbe 0x479f26
mov r9, r8
neg r9
and r9d, 0xf
mov dword [rsp + 0x80], r9d
je 0x479f0c
movzx r12d, byte [r8]
cmp dword [rsp + 0x80], 1
lea r11d, [r11 - 1]
lea rcx, [rbp + 1]
lea r9, [r8 + 1]
mov dword [rsp + 0x94], r11d
mov byte [rbp], r12b
mov r12d, r11d
je 0x479361
movzx r12d, byte [r8 + 1]
mov r11d, dword [rsp + 0x88]
lea rcx, [rbp + 2]
lea r9, [r8 + 2]
mov byte [rbp + 1], r12b
mov r12d, r11d
sub r12d, 2
cmp dword [rsp + 0x80], 2
je 0x479361
movzx r12d, byte [r8 + 2]
lea rcx, [rbp + 3]
lea r9, [r8 + 3]
mov byte [rbp + 2], r12b
mov r12d, r11d
sub r12d, 3
cmp dword [rsp + 0x80], 3
je 0x479361
movzx r12d, byte [r8 + 3]
lea rcx, [rbp + 4]
lea r9, [r8 + 4]
mov byte [rbp + 3], r12b
mov r12d, r11d
sub r12d, 4
cmp dword [rsp + 0x80], 4
je 0x479361
movzx r12d, byte [r8 + 4]
lea rcx, [rbp + 5]
lea r9, [r8 + 5]
mov byte [rbp + 4], r12b
mov r12d, r11d
sub r12d, 5
cmp dword [rsp + 0x80], 5
je 0x479361
movzx r12d, byte [r8 + 5]
lea rcx, [rbp + 6]
lea r9, [r8 + 6]
mov byte [rbp + 5], r12b
mov r12d, r11d
sub r12d, 6
cmp dword [rsp + 0x80], 6
je 0x479361
movzx r12d, byte [r8 + 6]
lea rcx, [rbp + 7]
lea r9, [r8 + 7]
mov byte [rbp + 6], r12b
mov r12d, r11d
sub r12d, 7
cmp dword [rsp + 0x80], 7
je 0x479361
movzx r12d, byte [r8 + 7]
lea rcx, [rbp + 8]
lea r9, [r8 + 8]
mov byte [rbp + 7], r12b
mov r12d, r11d
sub r12d, 8
cmp dword [rsp + 0x80], 8
je 0x479361
movzx r12d, byte [r8 + 8]
lea rcx, [rbp + 9]
lea r9, [r8 + 9]
mov byte [rbp + 8], r12b
mov r12d, r11d
sub r12d, 9
cmp dword [rsp + 0x80], 9
je 0x479361
movzx r12d, byte [r8 + 9]
lea rcx, [rbp + 0xa]
lea r9, [r8 + 0xa]
mov byte [rbp + 9], r12b
mov r12d, r11d
sub r12d, 0xa
cmp dword [rsp + 0x80], 0xa
je 0x479361
movzx r12d, byte [r8 + 0xa]
lea rcx, [rbp + 0xb]
lea r9, [r8 + 0xb]
mov byte [rbp + 0xa], r12b
mov r12d, r11d
sub r12d, 0xb
cmp dword [rsp + 0x80], 0xb
je 0x479361
movzx r12d, byte [r8 + 0xb]
lea rcx, [rbp + 0xc]
lea r9, [r8 + 0xc]
mov byte [rbp + 0xb], r12b
mov r12d, r11d
sub r12d, 0xc
cmp dword [rsp + 0x80], 0xc
je 0x479361
movzx r12d, byte [r8 + 0xc]
lea rcx, [rbp + 0xd]
lea r9, [r8 + 0xd]
mov byte [rbp + 0xc], r12b
mov r12d, r11d
sub r12d, 0xd
cmp dword [rsp + 0x80], 0xd
je 0x479361
movzx r12d, byte [r8 + 0xd]
lea rcx, [rbp + 0xe]
lea r9, [r8 + 0xe]
mov byte [rbp + 0xd], r12b
mov r12d, r11d
sub r12d, 0xe
cmp dword [rsp + 0x80], 0xf
jne 0x479361
lea r9, [r8 + 0xf]
movzx r8d, byte [r8 + 0xe]
mov r12d, r11d
lea rcx, [rbp + 0xf]
sub r12d, 0xf
mov byte [rbp + 0xe], r8b
mov r8d, dword [rsp + 0x80]
mov r11, r8
mov qword [rsp + 0x80], r8
mov r8d, dword [rsp + 0x88]
sub r8d, r11d
mov dword [rsp + 0xa8], r8d
sub r8d, 0x10
shr r8d, 4
add r8d, 1
mov dword [rsp + 0xa4], r8d
shl r8d, 4
mov dword [rsp + 0xa0], r8d
mov r8d, dword [rsp + 0x94]
sub r8d, r11d
cmp r8d, 0xe
jbe 0x479469
mov r11, qword [rsp + 0x80]
mov r8, qword [rsp + 0x98]
mov dword [rsp + 0x80], 0
mov dword [rsp + 0xac], eax
add r8, r11
add r8, qword [rsp + 0x18]
add r11, rbp
mov qword [rsp + 0x88], r11
mov r11d, dword [rsp + 0x90]
mov qword [rsp + 0x98], r8
xor r8d, r8d
mov rax, qword [rsp + 0x98]
add dword [rsp + 0x80], 1
movdqa xmm0, xmmword [rax + r8]
mov rax, qword [rsp + 0x88]
movups xmmword [rax + r8], xmm0
mov eax, dword [rsp + 0x80]
add r8, 0x10
cmp eax, dword [rsp + 0xa4]
jb 0x479404
mov r8d, dword [rsp + 0xa0]
mov eax, dword [rsp + 0xac]
mov dword [rsp + 0x90], r11d
add rcx, r8
sub r12d, r8d
add r9, r8
cmp r8d, dword [rsp + 0xa8]
je 0x47955a
movzx r8d, byte [r9]
cmp r12d, 1
mov byte [rcx], r8b
je 0x47955a
movzx r8d, byte [r9 + 1]
cmp r12d, 2
mov byte [rcx + 1], r8b
je 0x47955a
movzx r8d, byte [r9 + 2]
cmp r12d, 3
mov byte [rcx + 2], r8b
je 0x47955a
movzx r8d, byte [r9 + 3]
cmp r12d, 4
mov byte [rcx + 3], r8b
je 0x47955a
movzx r8d, byte [r9 + 4]
cmp r12d, 5
mov byte [rcx + 4], r8b
je 0x47955a
movzx r8d, byte [r9 + 5]
cmp r12d, 6
mov byte [rcx + 5], r8b
je 0x47955a
movzx r8d, byte [r9 + 6]
cmp r12d, 7
mov byte [rcx + 6], r8b
je 0x47955a
movzx r8d, byte [r9 + 7]
cmp r12d, 8
mov byte [rcx + 7], r8b
je 0x47955a
movzx r8d, byte [r9 + 8]
cmp r12d, 9
mov byte [rcx + 8], r8b
je 0x47955a
movzx r8d, byte [r9 + 9]
cmp r12d, 0xa
mov byte [rcx + 9], r8b
je 0x47955a
movzx r8d, byte [r9 + 0xa]
cmp r12d, 0xb
mov byte [rcx + 0xa], r8b
je 0x47955a
movzx r8d, byte [r9 + 0xb]
cmp r12d, 0xc
mov byte [rcx + 0xb], r8b
je 0x47955a
movzx r8d, byte [r9 + 0xc]
cmp r12d, 0xd
mov byte [rcx + 0xc], r8b
je 0x47955a
movzx r8d, byte [r9 + 0xd]
cmp r12d, 0xe
mov byte [rcx + 0xd], r8b
je 0x47955a
movzx r8d, byte [r9 + 0xe]
mov byte [rcx + 0xe], r8b
mov ecx, dword [rsp + 0x94]
mov r12d, dword [rsp + 0x2c]
cmp r12d, r10d
mov r11, rcx
mov qword [rsp + 0x80], rcx
lea rcx, [rbp + rcx + 1]
jae 0x479eff
lea r8, [rbp + r11 + 0x11]
sub r10d, r12d
cmp qword [rsp + 0x18], r8
setae r9b
cmp rcx, qword [rsp + 0x58]
mov r11d, r9d
setae r8b
or r11b, r8b
je 0x479fd4
cmp r12d, 0x16
jbe 0x479fd4
mov r8d, dword [rsp + 0x28]
test r8d, r8d
je 0x479fc4
mov r11, qword [rsp + 0x18]
cmp dword [rsp + 0x28], 1
lea r12, [rcx + 1]
movzx r9d, byte [r11]
lea r8, [r11 + 1]
mov byte [rcx], r9b
je 0x47a01e
movzx r9d, byte [r11 + 1]
lea r8, [r11 + 2]
mov r11d, dword [rsp + 0x2c]
lea r12, [rcx + 2]
mov byte [rcx + 1], r9b
mov r9d, r11d
sub r9d, 2
cmp dword [rsp + 0x28], 2
je 0x4797f5
mov r9, qword [rsp + 0x18]
lea r12, [rcx + 3]
lea r8, [r9 + 3]
movzx r9d, byte [r9 + 2]
mov byte [rcx + 2], r9b
mov r9d, r11d
sub r9d, 3
cmp dword [rsp + 0x28], 3
je 0x4797f5
mov r9, qword [rsp + 0x18]
lea r12, [rcx + 4]
lea r8, [r9 + 4]
movzx r9d, byte [r9 + 3]
mov byte [rcx + 3], r9b
mov r9d, r11d
sub r9d, 4
cmp dword [rsp + 0x28], 4
je 0x4797f5
mov r9, qword [rsp + 0x18]
lea r12, [rcx + 5]
lea r8, [r9 + 5]
movzx r9d, byte [r9 + 4]
mov byte [rcx + 4], r9b
mov r9d, r11d
sub r9d, 5
cmp dword [rsp + 0x28], 5
je 0x4797f5
mov r9, qword [rsp + 0x18]
lea r12, [rcx + 6]
lea r8, [r9 + 6]
movzx r9d, byte [r9 + 5]
mov byte [rcx + 5], r9b
mov r9d, r11d
sub r9d, 6
cmp dword [rsp + 0x28], 6
je 0x4797f5
mov r9, qword [rsp + 0x18]
lea r12, [rcx + 7]
lea r8, [r9 + 7]
movzx r9d, byte [r9 + 6]
mov byte [rcx + 6], r9b
mov r9d, r11d
sub r9d, 7
cmp dword [rsp + 0x28], 7
je 0x4797f5
mov r9, qword [rsp + 0x18]
lea r12, [rcx + 8]
lea r8, [r9 + 8]
movzx r9d, byte [r9 + 7]
mov byte [rcx + 7], r9b
mov r9d, r11d
sub r9d, 8
cmp dword [rsp + 0x28], 8
je 0x4797f5
mov r9, qword [rsp + 0x18]
lea r12, [rcx + 9]
lea r8, [r9 + 9]
movzx r9d, byte [r9 + 8]
mov byte [rcx + 8], r9b
mov r9d, r11d
sub r9d, 9
cmp dword [rsp + 0x28], 9
je 0x4797f5
mov r9, qword [rsp + 0x18]
lea r12, [rcx + 0xa]
lea r8, [r9 + 0xa]
movzx r9d, byte [r9 + 9]
mov byte [rcx + 9], r9b
mov r9d, r11d
sub r9d, 0xa
cmp dword [rsp + 0x28], 0xa
je 0x4797f5
mov r9, qword [rsp + 0x18]
lea r12, [rcx + 0xb]
lea r8, [r9 + 0xb]
movzx r9d, byte [r9 + 0xa]
mov byte [rcx + 0xa], r9b
mov r9d, r11d
sub r9d, 0xb
cmp dword [rsp + 0x28], 0xb
je 0x4797f5
mov r9, qword [rsp + 0x18]
lea r12, [rcx + 0xc]
lea r8, [r9 + 0xc]
movzx r9d, byte [r9 + 0xb]
mov byte [rcx + 0xb], r9b
mov r9d, r11d
sub r9d, 0xc
cmp dword [rsp + 0x28], 0xc
je 0x4797f5
mov r9, qword [rsp + 0x18]
lea r12, [rcx + 0xd]
lea r8, [r9 + 0xd]
movzx r9d, byte [r9 + 0xc]
mov byte [rcx + 0xc], r9b
mov r9d, r11d
sub r9d, 0xd
cmp dword [rsp + 0x28], 0xd
je 0x4797f5
mov r9, qword [rsp + 0x18]
lea r12, [rcx + 0xe]
lea r8, [r9 + 0xe]
movzx r9d, byte [r9 + 0xd]
mov byte [rcx + 0xd], r9b
mov r9d, r11d
sub r9d, 0xe
cmp dword [rsp + 0x28], 0xf
jne 0x4797f5
mov r9, qword [rsp + 0x18]
lea r12, [rcx + 0xf]
lea r8, [r9 + 0xf]
movzx r9d, byte [r9 + 0xe]
mov byte [rcx + 0xe], r9b
mov r9d, r11d
sub r9d, 0xf
cmp dword [rsp + 0x44], 0xe
jbe 0x47988e
mov r11, qword [rsp + 0x80]
add r11, qword [rsp + 0x78]
mov dword [rsp + 0x80], 0
mov dword [rsp + 0x94], eax
add rbp, r11
mov r11d, dword [rsp + 0x90]
mov qword [rsp + 0x88], rbp
xor ebp, ebp
mov rax, qword [rsp + 0x70]
add dword [rsp + 0x80], 1
movdqa xmm0, xmmword [rax + rbp]
mov rax, qword [rsp + 0x88]
movups xmmword [rax + rbp], xmm0
mov eax, dword [rsp + 0x80]
add rbp, 0x10
cmp dword [rsp + 0x4c], eax
ja 0x479834
mov ebp, dword [rsp + 0x48]
mov dword [rsp + 0x90], r11d
mov r11, qword [rsp + 0x38]
mov eax, dword [rsp + 0x94]
sub r9d, ebp
add r12, r11
add r8, r11
cmp ebp, dword [rsp + 0x50]
je 0x47998e
movzx ebp, byte [r8]
cmp r9d, 1
mov byte [r12], bpl
je 0x47998e
movzx ebp, byte [r8 + 1]
cmp r9d, 2
mov byte [r12 + 1], bpl
je 0x47998e
movzx ebp, byte [r8 + 2]
cmp r9d, 3
mov byte [r12 + 2], bpl
je 0x47998e
movzx ebp, byte [r8 + 3]
cmp r9d, 4
mov byte [r12 + 3], bpl
je 0x47998e
movzx ebp, byte [r8 + 4]
cmp r9d, 5
mov byte [r12 + 4], bpl
je 0x47998e
movzx ebp, byte [r8 + 5]
cmp r9d, 6
mov byte [r12 + 5], bpl
je 0x47998e
movzx ebp, byte [r8 + 6]
cmp r9d, 7
mov byte [r12 + 6], bpl
je 0x47998e
movzx ebp, byte [r8 + 7]
cmp r9d, 8
mov byte [r12 + 7], bpl
je 0x47998e
movzx ebp, byte [r8 + 8]
cmp r9d, 9
mov byte [r12 + 8], bpl
je 0x47998e
movzx ebp, byte [r8 + 9]
cmp r9d, 0xa
mov byte [r12 + 9], bpl
je 0x47998e
movzx ebp, byte [r8 + 0xa]
cmp r9d, 0xb
mov byte [r12 + 0xa], bpl
je 0x47998e
movzx ebp, byte [r8 + 0xb]
cmp r9d, 0xc
mov byte [r12 + 0xb], bpl
je 0x47998e
movzx ebp, byte [r8 + 0xc]
cmp r9d, 0xd
mov byte [r12 + 0xc], bpl
je 0x47998e
movzx ebp, byte [r8 + 0xd]
cmp r9d, 0xe
mov byte [r12 + 0xd], bpl
je 0x47998e
movzx r8d, byte [r8 + 0xe]
mov byte [r12 + 0xe], r8b
mov r9, qword [rsp + 0x60]
mov r11d, dword [rsp + 0x90]
lea rbp, [rcx + r9 + 1]
mov r8, rbp
sub r8, r11
jmp 0x479076
movzx r12d, byte [rdi + 1]
add edx, 0x10
add rdi, 2
shl r12d, cl
add eax, r12d
jmp 0x478a4d
mov r11, qword [rsp + 0x18]
sub r9d, ecx
mov qword [rsp + 0x98], r9
mov r8, r11
add r8, r9
cmp r10d, ecx
jbe 0x479076
lea r9, [r11 + r9 + 0x10]
sub r10d, ecx
cmp rbp, r9
lea r9, [rbp + 0x10]
setae r12b
cmp r8, r9
setae r9b
or r12b, r9b
je 0x479f85
cmp ecx, 0x16
jbe 0x479f85
mov r9, r8
neg r9
and r9d, 0xf
mov dword [rsp + 0x88], r9d
je 0x479f67
movzx r11d, byte [r8]
cmp dword [rsp + 0x88], 1
lea r12, [rbp + 1]
lea r9, [r8 + 1]
mov byte [rbp], r11b
lea r11d, [rcx - 1]
mov dword [rsp + 0x94], r11d
mov dword [rsp + 0x80], r11d
je 0x479c97
movzx r11d, byte [r8 + 1]
cmp dword [rsp + 0x88], 2
lea r12, [rbp + 2]
lea r9, [r8 + 2]
mov byte [rbp + 1], r11b
lea r11d, [rcx - 2]
mov dword [rsp + 0x80], r11d
je 0x479c97
movzx r11d, byte [r8 + 2]
cmp dword [rsp + 0x88], 3
lea r12, [rbp + 3]
lea r9, [r8 + 3]
mov byte [rbp + 2], r11b
lea r11d, [rcx - 3]
mov dword [rsp + 0x80], r11d
je 0x479c97
movzx r11d, byte [r8 + 3]
cmp dword [rsp + 0x88], 4
lea r12, [rbp + 4]
lea r9, [r8 + 4]
mov byte [rbp + 3], r11b
lea r11d, [rcx - 4]
mov dword [rsp + 0x80], r11d
je 0x479c97
movzx r11d, byte [r8 + 4]
cmp dword [rsp + 0x88], 5
lea r12, [rbp + 5]
lea r9, [r8 + 5]
mov byte [rbp + 4], r11b
lea r11d, [rcx - 5]
mov dword [rsp + 0x80], r11d
je 0x479c97
movzx r11d, byte [r8 + 5]
cmp dword [rsp + 0x88], 6
lea r12, [rbp + 6]
lea r9, [r8 + 6]
mov byte [rbp + 5], r11b
lea r11d, [rcx - 6]
mov dword [rsp + 0x80], r11d
je 0x479c97
movzx r11d, byte [r8 + 6]
cmp dword [rsp + 0x88], 7
lea r12, [rbp + 7]
lea r9, [r8 + 7]
mov byte [rbp + 6], r11b
lea r11d, [rcx - 7]
mov dword [rsp + 0x80], r11d
je 0x479c97
movzx r11d, byte [r8 + 7]
cmp dword [rsp + 0x88], 8
lea r12, [rbp + 8]
lea r9, [r8 + 8]
mov byte [rbp + 7], r11b
lea r11d, [rcx - 8]
mov dword [rsp + 0x80], r11d
je 0x479c97
movzx r11d, byte [r8 + 8]
cmp dword [rsp + 0x88], 9
lea r12, [rbp + 9]
lea r9, [r8 + 9]
mov byte [rbp + 8], r11b
lea r11d, [rcx - 9]
mov dword [rsp + 0x80], r11d
je 0x479c97
movzx r11d, byte [r8 + 9]
cmp dword [rsp + 0x88], 0xa
lea r12, [rbp + 0xa]
lea r9, [r8 + 0xa]
mov byte [rbp + 9], r11b
lea r11d, [rcx - 0xa]
mov dword [rsp + 0x80], r11d
je 0x479c97
movzx r11d, byte [r8 + 0xa]
cmp dword [rsp + 0x88], 0xb
lea r12, [rbp + 0xb]
lea r9, [r8 + 0xb]
mov byte [rbp + 0xa], r11b
lea r11d, [rcx - 0xb]
mov dword [rsp + 0x80], r11d
je 0x479c97
movzx r11d, byte [r8 + 0xb]
cmp dword [rsp + 0x88], 0xc
lea r12, [rbp + 0xc]
lea r9, [r8 + 0xc]
mov byte [rbp + 0xb], r11b
lea r11d, [rcx - 0xc]
mov dword [rsp + 0x80], r11d
je 0x479c97
movzx r11d, byte [r8 + 0xc]
cmp dword [rsp + 0x88], 0xd
lea r12, [rbp + 0xd]
lea r9, [r8 + 0xd]
mov byte [rbp + 0xc], r11b
lea r11d, [rcx - 0xd]
mov dword [rsp + 0x80], r11d
je 0x479c97
movzx r11d, byte [r8 + 0xd]
cmp dword [rsp + 0x88], 0xf
lea r12, [rbp + 0xe]
lea r9, [r8 + 0xe]
mov byte [rbp + 0xd], r11b
lea r11d, [rcx - 0xe]
mov dword [rsp + 0x80], r11d
jne 0x479c97
lea r9, [r8 + 0xf]
movzx r8d, byte [r8 + 0xe]
lea r11d, [rcx - 0xf]
lea r12, [rbp + 0xf]
mov dword [rsp + 0x80], r11d
mov byte [rbp + 0xe], r8b
mov r8d, dword [rsp + 0x88]
sub ecx, r8d
mov dword [rsp + 0xa8], ecx
sub ecx, 0x10
shr ecx, 4
add ecx, 1
mov dword [rsp + 0xa4], ecx
shl ecx, 4
mov dword [rsp + 0xa0], ecx
mov ecx, dword [rsp + 0x94]
sub ecx, r8d
cmp ecx, 0xe
jbe 0x479d70
mov rcx, qword [rsp + 0x98]
mov r11d, dword [rsp + 0x90]
mov dword [rsp + 0xac], eax
add rcx, r8
add rcx, qword [rsp + 0x18]
mov qword [rsp + 0x98], rcx
lea rcx, [rbp + r8]
xor r8d, r8d
mov qword [rsp + 0x88], rcx
xor ecx, ecx
mov rax, qword [rsp + 0x98]
add r8d, 1
movdqa xmm0, xmmword [rax + rcx]
mov rax, qword [rsp + 0x88]
movups xmmword [rax + rcx], xmm0
add rcx, 0x10
cmp dword [rsp + 0xa4], r8d
ja 0x479d0f
mov dword [rsp + 0x90], r11d
mov r11d, dword [rsp + 0xa0]
sub dword [rsp + 0x80], r11d
mov eax, dword [rsp + 0xac]
mov ecx, r11d
add r12, rcx
add r9, rcx
cmp r11d, dword [rsp + 0xa8]
je 0x478f27
movzx ecx, byte [r9]
mov r8d, dword [rsp + 0x80]
cmp r8d, 1
mov byte [r12], cl
je 0x478f27
movzx ecx, byte [r9 + 1]
cmp r8d, 2
mov byte [r12 + 1], cl
je 0x478f27
movzx ecx, byte [r9 + 2]
cmp r8d, 3
mov byte [r12 + 2], cl
je 0x478f27
movzx ecx, byte [r9 + 3]
cmp r8d, 4
mov byte [r12 + 3], cl
je 0x478f27
movzx ecx, byte [r9 + 4]
cmp r8d, 5
mov byte [r12 + 4], cl
je 0x478f27
movzx ecx, byte [r9 + 5]
cmp r8d, 6
mov byte [r12 + 5], cl
je 0x478f27
movzx ecx, byte [r9 + 6]
cmp r8d, 7
mov byte [r12 + 6], cl
je 0x478f27
movzx ecx, byte [r9 + 7]
cmp r8d, 8
mov byte [r12 + 7], cl
je 0x478f27
movzx ecx, byte [r9 + 8]
cmp r8d, 9
mov byte [r12 + 8], cl
je 0x478f27
movzx ecx, byte [r9 + 9]
cmp r8d, 0xa
mov byte [r12 + 9], cl
je 0x478f27
movzx ecx, byte [r9 + 0xa]
cmp r8d, 0xb
mov byte [r12 + 0xa], cl
je 0x478f27
movzx ecx, byte [r9 + 0xb]
cmp r8d, 0xc
mov byte [r12 + 0xb], cl
je 0x478f27
movzx ecx, byte [r9 + 0xc]
cmp r8d, 0xd
mov byte [r12 + 0xc], cl
je 0x478f27
movzx ecx, byte [r9 + 0xd]
cmp r8d, 0xe
mov byte [r12 + 0xd], cl
je 0x478f27
movzx ecx, byte [r9 + 0xe]
mov byte [r12 + 0xe], cl
jmp 0x478f27
mov r8, r11
jmp 0x478d2b
add rbp, 1
jmp 0x4788ee
lea r11d, [rcx - 1]
mov r12d, ecx
mov r9, rbp
mov dword [rsp + 0x94], r11d
jmp 0x478d2b
lea r9d, [rcx - 1]
mov r11d, dword [rsp + 0x90]
xor ecx, ecx
mov dword [rsp + 0x94], r9d
add r9, 1
movzx r12d, byte [r8 + rcx]
mov byte [rbp + rcx], r12b
add rcx, 1
cmp rcx, r9
jne 0x479edf
mov dword [rsp + 0x90], r11d
jmp 0x478f27
mov r8, qword [rsp + 0x18]
mov rbp, rcx
jmp 0x479076
mov r11d, r12d
mov r9, r8
mov rcx, rbp
sub r11d, 1
mov dword [rsp + 0x94], r11d
jmp 0x479361
mov ecx, dword [rsp + 0x88]
mov r11d, dword [rsp + 0x90]
lea r9d, [rcx - 1]
xor ecx, ecx
mov dword [rsp + 0x94], r9d
add r9, 1
movzx r12d, byte [r8 + rcx]
mov byte [rbp + rcx], r12b
add rcx, 1
cmp r9, rcx
jne 0x479f47
mov dword [rsp + 0x90], r11d
jmp 0x47955a
lea r11d, [rcx - 1]
mov r9, r8
mov dword [rsp + 0x80], ecx
mov r12, rbp
mov dword [rsp + 0x94], r11d
jmp 0x479c97
lea r9d, [rcx - 1]
mov r11d, dword [rsp + 0x90]
xor ecx, ecx
mov dword [rsp + 0x94], r9d
add r9, 1
movzx r12d, byte [r8 + rcx]
mov byte [rbp + rcx], r12b
add rcx, 1
cmp r9, rcx
jne 0x479f9f
jmp 0x479ef2
mov r8, qword [rsp + 0x98]
jmp 0x478d2b
mov r9d, r12d
mov r8, qword [rsp + 0x18]
mov r12, rcx
jmp 0x4797f5
mov rbp, qword [rsp + 0x18]
mov r11d, dword [rsp + 0x90]
xor r8d, r8d
movzx r9d, byte [rbp + r8]
mov byte [rcx + r8], r9b
add r8, 1
cmp qword [rsp + 0x68], r8
jne 0x479fe4
mov dword [rsp + 0x90], r11d
jmp 0x47998e
lea rbx, [0x004bbc80]
mov qword [r15 + 0x20], rbx
mov dword [r14 + 8], 0x3f51
jmp 0x4788ff
mov r9d, dword [rsp + 0x20]
jmp 0x4797f5