Function at 0x180022990
Capabilities:
Hash data with crc32
Write file on windows

Disassembly:
mov r11, rsp
push rbx
push rbp
push rdi
push r12
sub rsp, 0xaa8
mov rax, qword [section..data]
xor rax, rsp
mov qword [rsp + 0xa90], rax
xor ebp, ebp
mov qword [r11 + 0x10], rsi
mov qword [r11 + 0x18], r13
mov dword [rsp + 0x470], ebp
mov r13, rcx
mov dword [rsp + 0x5c], edx
mov qword [r11 - 0x650], rbp
mov qword [r11 - 0x648], rbp
lea rcx, [r11 - 0x63f]
mov edi, ebp
xor edx, edx
mov r8d, 0x3ff
mov dword [rsp + 0x50], ebp
mov byte [rsp + 0x488], dil
call fcn.180035040
lea rdx, str.Fixing_GPT._n
mov rcx, r13
call fcn.180016c70
mov eax, dword [r13 + 0x317]
lea r12d, [rbp + 2]
and eax, 0x1ffffff
cmp eax, 0xffffffff
je 0x1800236c5
lea rax, [rsp + 0x48]
test rax, rax
je 0x1800236b4
lea rcx, [rsp + 0x48]
call fcn.180001a60
test eax, eax
je 0x1800236b4
mov edx, dword [r13 + 0x317]
mov rsi, qword [rsp + 0x48]
lea r8d, [rbp + 1]
and edx, 0x1ffffff
mov rcx, rsi
call fcn.180002620
test eax, eax
je 0x18002366e
test rsi, rsi
je 0x180023664
lea rax, [rsp + 0x68]
test rax, rax
je 0x180023664
mov edx, dword [rsi + 0x7f]
lea r9d, [rbp + 4]
xor ecx, ecx
mov r8d, 0x1000
mov qword [rsp + 0xae8], r14
call qword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov r14, rax
mov qword [rsp + 0x60], rax
test rax, rax
je 0x18002365c
mov ecx, dword [rsi + 0x7f]
lea rax, [rsp + 0x44]
mov r9, r14
mov rdx, rcx
mov r8d, ecx
mov rcx, rsi
mov qword [rsp + 0x20], rax
call fcn.180002c60
movabs r8, 0x5452415020494645
test eax, eax
je 0x180022ae8
cmp qword [r14], r8
jne 0x180022ae8
cmp qword [r14 + 0x18], 1
je 0x180022b78
mov ecx, dword [rsi + 0x7f]
xor edx, edx
mov eax, 0x3fff
div rcx
lea ebx, [rax + 1]
lea rax, [rsp + 0x48]
test rax, rax
je 0x180022b0c
mov rax, qword [rsi + 0x18]
sub rax, qword [rsi + 0x28]
jmp 0x180022b11
mov rax, qword [rsp + 0x48]
mov qword [r14], r8
mov dword [r14 + 8], 0x10000
mov dword [r14 + 0xc], 0x5c
mov dword [r14 + 0x14], ebp
mov qword [r14 + 0x18], 1
mov ecx, dword [rsi + 0x7f]
xor edx, edx
div rcx
lea rcx, [r14 + 0x38]
dec rax
mov qword [r14 + 0x20], rax
call qword [sym.imp.ole32.dll_CoCreateGuid]
lea ecx, [rbx + 2]
mov qword [r14 + 0x28], rcx
mov rcx, qword [r14 + 0x20]
mov eax, ebx
sub rcx, rax
mov qword [r14 + 0x48], r12
mov dword [r14 + 0x50], 0x80
dec rcx
mov dword [r14 + 0x54], 0x80
mov dword [r14 + 0x58], ebp
mov qword [r14 + 0x30], rcx
mov ecx, dword [rsi + 0x7f]
mov rax, qword [r14 + 0x20]
xor edx, edx
mov qword [rsp + 0x68], rax
mov eax, dword [r14 + 0x54]
mov r9d, 4
mov r8d, 0x1000
imul eax, dword [r14 + 0x50]
dec eax
div ecx
inc eax
imul eax, ecx
xor ecx, ecx
mov edx, eax
mov dword [rsp + 0x54], eax
call qword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov r11, rax
mov qword [rsp + 0x48], rax
test rax, rax
je 0x18002364b
lea r10, [0x180000000]
mov qword [rsp + 0xaa0], r15
lea r15, [r13 + 0x10106]
mov rdx, qword [r10 + 0x3d510]
mov r12d, ebp
mov r9d, ebp
mov dword [rsp + 0x58], ebp
cmp rdx, qword [r15]
jne 0x180022c00
mov rdx, qword [r10 + 0x3d518]
cmp rdx, qword [r15 + 8]
jne 0x180022c00
mov eax, ebp
jmp 0x180022c05
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x180022da9
mov r14d, dword [rsp + 0x5c]
mov rax, r15
lea rbp, [r11 + 0x28]
mov r15, r11
lea rbx, [r13 + 0x100e3]
mov r8, qword [r10 + 0x4a520]
cmp r8, qword [rax]
jne 0x180022c40
mov r8, qword [r10 + 0x4a528]
cmp r8, qword [rax + 8]
jne 0x180022c40
xor ecx, ecx
jmp 0x180022c45
sbb ecx, ecx
sbb ecx, 0xffffffff
test ecx, ecx
je 0x180022d49
mov rdx, qword [r10 + 0x4a530]
cmp rdx, qword [rax]
jne 0x180022c6a
mov rdx, qword [r10 + 0x4a538]
cmp rdx, qword [rax + 8]
jne 0x180022c6a
xor eax, eax
jmp 0x180022c6f
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x180022d49
mov ecx, dword [rsi + 0x7f]
mov rax, qword [rbx]
xor edx, edx
div rcx
xor edx, edx
mov qword [rbp - 8], rax
mov ecx, dword [rsi + 0x7f]
mov rax, qword [rbx + 8]
add rax, qword [rbx]
div rcx
dec rax
mov qword [rbp], rax
mov rax, qword [rbx + 0x23]
mov qword [rbp - 0x28], rax
mov rax, qword [rbx + 0x2b]
mov qword [rbp - 0x20], rax
mov eax, r12d
shl rax, 7
lea rcx, [rax + r15 + 0x10]
call qword [sym.imp.ole32.dll_CoCreateGuid]
mov qword [rbp + 8], 0
mov rax, qword [rbx + 0x43]
mov qword [rbp + 0x10], rax
mov rax, qword [rbx + 0x4b]
mov qword [rbp + 0x18], rax
mov rax, qword [rbx + 0x53]
mov qword [rbp + 0x20], rax
mov rax, qword [rbx + 0x5b]
mov qword [rbp + 0x28], rax
mov rax, qword [rbx + 0x63]
mov qword [rbp + 0x30], rax
mov rax, qword [rbx + 0x6b]
mov qword [rbp + 0x38], rax
mov rax, qword [rbx + 0x73]
mov qword [rbp + 0x40], rax
mov rax, qword [rbx + 0x7b]
mov qword [rbp + 0x48], rax
mov rax, qword [rbx + 0x83]
mov qword [rbp + 0x50], rax
movzx eax, byte [rbx + 0x22]
and al, 7
cmp al, 2
jne 0x180022d20
cmp edi, r14d
je 0x180022d29
movzx eax, byte [rbx + 0x21]
cmp byte [rbx + 0x20], al
je 0x180022d36
mov r9d, 1
mov dword [rsp + 0x58], r9d
jmp 0x180022d3b
mov r9d, dword [rsp + 0x58]
inc r12d
lea r10, [0x180000000]
sub rbp, 0xffffffffffffff80
mov r8, qword [r10 + 0x3d510]
inc edi
add rbx, 0xc3
mov eax, edi
imul rax, rax, 0xc3
lea rax, [rax + r13 + 0x10106]
cmp r8, qword [rax]
jne 0x180022d80
mov r8, qword [r10 + 0x3d518]
cmp r8, qword [rax + 8]
jne 0x180022d80
xor ecx, ecx
jmp 0x180022d85
sbb ecx, ecx
sbb ecx, 0xffffffff
test ecx, ecx
jne 0x180022c23
mov r14, qword [rsp + 0x60]
lea r15, [r13 + 0x10106]
test r9d, r9d
jne 0x180022f05
mov r11, qword [rsp + 0x48]
xor ebp, ebp
mov r8d, dword [rsp + 0x54]
xor edx, edx
mov rcx, r11
mov r12d, ebp
call fcn.180035040
lea rax, [0x180000000]
mov rcx, qword [rax + 0x3d510]
lea rax, [rax + 0x3d510]
cmp rcx, qword [r15]
jne 0x180022de3
mov rcx, qword [rax + 8]
cmp rcx, qword [r15 + 8]
jne 0x180022de3
xor eax, eax
jmp 0x180022de8
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x180022f0c
mov r15, qword [rsp + 0x48]
lea rbx, [r13 + 0x100e3]
lea r14, [0x180000000]
lea rdi, [r15 + 0x28]
nop word [rax + rax]
cmp byte [rbx + 0x20], 0xff
jne 0x180022eba
mov ecx, dword [rsi + 0x7f]
mov rax, qword [rbx]
xor edx, edx
div rcx
xor edx, edx
mov qword [rdi - 8], rax
mov ecx, dword [rsi + 0x7f]
mov rax, qword [rbx + 8]
add rax, qword [rbx]
div rcx
dec rax
mov qword [rdi], rax
mov rax, qword [rbx + 0x23]
mov qword [rdi - 0x28], rax
mov rax, qword [rbx + 0x2b]
mov qword [rdi - 0x20], rax
mov eax, r12d
shl rax, 7
lea rcx, [rax + r15 + 0x10]
call qword [sym.imp.ole32.dll_CoCreateGuid]
mov qword [rdi + 8], 0
mov rax, qword [rbx + 0x43]
mov qword [rdi + 0x10], rax
mov rax, qword [rbx + 0x4b]
inc r12d
mov qword [rdi + 0x18], rax
mov rax, qword [rbx + 0x53]
sub rdi, 0xffffffffffffff80
mov qword [rdi - 0x60], rax
mov rax, qword [rbx + 0x5b]
mov qword [rdi - 0x58], rax
mov rax, qword [rbx + 0x63]
mov qword [rdi - 0x50], rax
mov rax, qword [rbx + 0x6b]
mov qword [rdi - 0x48], rax
mov rax, qword [rbx + 0x73]
mov qword [rdi - 0x40], rax
mov rax, qword [rbx + 0x7b]
mov qword [rdi - 0x38], rax
mov rax, qword [rbx + 0x83]
mov qword [rdi - 0x30], rax
mov rdx, qword [r14 + 0x3d510]
inc ebp
add rbx, 0xc3
mov eax, ebp
imul rax, rax, 0xc3
lea rcx, [rax + r13 + 0x10106]
cmp rdx, qword [rcx]
jne 0x180022ef1
mov rdx, qword [r14 + 0x3d518]
cmp rdx, qword [rcx + 8]
jne 0x180022ef1
xor eax, eax
jmp 0x180022ef6
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x180022e10
mov r14, qword [rsp + 0x60]
jmp 0x180022f11
mov r15, qword [rsp + 0x48]
jmp 0x180022f11
mov r15, qword [rsp + 0x48]
mov r12d, dword [rsp + 0x54]
mov rcx, r15
mov edx, r12d
call fcn.18001d8f0
xor ebp, ebp
mov rcx, r14
lea edx, [rbp + 0x5c]
mov dword [r14 + 0x58], eax
mov dword [r14 + 0x10], ebp
call fcn.18001d8f0
lea r9d, [rbp + 4]
xor ecx, ecx
mov dword [r14 + 0x10], eax
mov eax, dword [rsi + 0x7f]
mov r8d, 0x1000
add eax, r12d
lea eax, [rax + rax + 0x230]
mov edx, eax
mov dword [rsp + 0x470], eax
call qword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov edi, 0x200
mov qword [rsp + 0x480], rax
mov qword [rsp + 0x478], rax
test rax, rax
je 0x180022fdd
mov qword [rax], rbp
mov rax, qword [rsp + 0x478]
mov rcx, rsi
mov dword [rax + 8], edi
mov rdx, qword [rsp + 0x478]
lea rax, [rsp + 0x44]
mov r8d, dword [rdx + 8]
lea r9, [rdx + 0xc]
mov rdx, qword [rdx]
mov qword [rsp + 0x20], rax
call fcn.180002c60
mov rbx, qword [rsp + 0x478]
mov r8d, dword [rbx + 8]
lea rdx, [rbx + 0xc]
lea rcx, [rsp + 0x890]
call fcn.18002dae0
mov r11d, dword [rbx + 8]
lea rax, [rbx + r11 + 0xc]
mov qword [rsp + 0x478], rax
bt dword [r13 + 0x317], 0x1c
jae 0x18002316e
lea rax, [rsp + 0x60]
test rax, rax
je 0x18002316e
mov rbx, qword [rsi + 0x18]
lea rcx, [rsp + 0x890]
mov r8, rdi
sub rbx, qword [rsi + 0x28]
xor edx, edx
call fcn.180035040
mov eax, 2
shr rbx, 9
mov word [rsp + 0xa50], ax
mov eax, 0xffff
movabs rcx, 0x100000000
mov word [rsp + 0xa54], ax
lea rax, [rbx - 1]
mov byte [rsp + 0xa4e], 0x80
mov byte [rsp + 0xa52], 0xee
mov byte [rsp + 0xa4f], bpl
mov byte [rsp + 0xa53], 0xff
mov dword [rsp + 0xa56], 1
cmp rax, rcx
jae 0x18002307c
lea eax, [rbx - 1]
mov dword [rsp + 0xa5a], eax
jmp 0x180023087
mov dword [rsp + 0xa5a], 0xffffffff
mov eax, 0xaa55
lea rdx, str.Restoring_protective_MBR.
mov rcx, r13
mov word [rsp + 0xa8e], ax
call fcn.180016b80
lea r11, [rsp + 0x40]
lea r9, [rsp + 0x890]
mov r8d, edi
xor edx, edx
mov rcx, rsi
mov qword [rsp + 0x20], r11
call fcn.180002e70
test eax, eax
je 0x1800231fa
lea r9, [rsp + 0x890]
mov edx, ebp
lea r8, [rsp + 0x70]
nop dword [rax]
mov eax, edx
mov ecx, 8
test al, 1
je 0x1800230f4
shr eax, 1
xor eax, 0xedb88320
jmp 0x1800230f6
shr eax, 1
sub rcx, 1
jne 0x1800230e7
inc edx
mov dword [r8], eax
add r8, 4
cmp edx, 0x100
jl 0x1800230e0
or ebx, 0xffffffff
movzx ecx, byte [r9]
mov eax, ebx
inc r9
xor rcx, rax
movzx eax, cl
mov ecx, ebx
mov ebx, dword [rsp + rax*4 + 0x70]
shr ecx, 8
xor ebx, ecx
add edi, 0xffffffff
jne 0x180023110
lea rcx, [rsp + 0x488]
not ebx
call qword [sym.imp.KERNEL32.dll_lstrlenA]
lea rdx, str._.8x
mov r8d, ebx
movsxd rcx, eax
lea rcx, [rsp + rcx + 0x488]
call qword [sym.imp.USER32.dll_wsprintfA]
lea rdx, str.Protective_MBR_restored.
mov rcx, r13
call fcn.180016b80
jmp 0x1800231fa
lea r9, [rsp + 0x890]
mov edx, ebp
lea r8, [rsp + 0x70]
nop dword [rax]
mov eax, edx
mov ecx, 8
test al, 1
je 0x180023194
shr eax, 1
xor eax, 0xedb88320
jmp 0x180023196
shr eax, 1
sub rcx, 1
jne 0x180023187
inc edx
mov dword [r8], eax
add r8, 4
cmp edx, 0x100
jl 0x180023180
or ebx, 0xffffffff
movzx ecx, byte [r9]
mov eax, ebx
inc r9
xor rcx, rax
movzx eax, cl
mov ecx, ebx
mov ebx, dword [rsp + rax*4 + 0x70]
shr ecx, 8
xor ebx, ecx
add edi, 0xffffffff
jne 0x1800231b0
lea rcx, [rsp + 0x488]
not ebx
call qword [sym.imp.KERNEL32.dll_lstrlenA]
lea rdx, str._.8x
mov r8d, ebx
movsxd rcx, eax
lea rcx, [rsp + rcx + 0x488]
call qword [sym.imp.USER32.dll_wsprintfA]
mov rcx, qword [rsp + 0x478]
test rcx, rcx
je 0x18002325f
mov eax, dword [rsi + 0x7f]
imul rax, qword [r14 + 0x18]
mov qword [rcx], rax
mov rax, qword [rsp + 0x478]
mov rcx, rsi
mov dword [rax + 8], 0x5c
mov rdx, qword [rsp + 0x478]
lea rax, [rsp + 0x44]
mov r8d, dword [rdx + 8]
lea r9, [rdx + 0xc]
mov rdx, qword [rdx]
mov qword [rsp + 0x20], rax
call fcn.180002c60
mov r11, qword [rsp + 0x478]
mov eax, dword [r11 + 8]
lea rcx, [r11 + rax + 0xc]
mov qword [rsp + 0x478], rcx
lea rdx, str.Updating_GPT_header_1._n
mov rcx, r13
call fcn.180016b80
mov r11d, dword [rsi + 0x7f]
lea rax, [rsp + 0x40]
mov rdx, r11
mov r9, r14
mov r8d, r11d
mov rcx, rsi
mov qword [rsp + 0x20], rax
imul rdx, qword [r14 + 0x18]
call fcn.180002e70
test eax, eax
je 0x18002361b
mov eax, dword [rsi + 0x7f]
cmp eax, dword [rsp + 0x40]
jne 0x18002361b
mov edx, eax
mov rcx, r14
call fcn.18001d8f0
lea rcx, [rsp + 0x488]
mov ebx, eax
call qword [sym.imp.KERNEL32.dll_lstrlenA]
lea rdx, str._.8x
movsxd rcx, eax
mov r8d, ebx
lea rcx, [rsp + rcx + 0x488]
call qword [sym.imp.USER32.dll_wsprintfA]
lea rdx, str.GPT_header_1_updated._n
mov rcx, r13
call fcn.180016b80
mov edi, dword [rsi + 0x7f]
mov rbx, qword [rsp + 0x68]
imul rdi, qword [r14 + 0x48]
mov qword [r14 + 0x18], rbx
mov ecx, dword [rsi + 0x7f]
xor edx, edx
mov eax, 0x3fff
mov dword [r14 + 0x10], ebp
div rcx
mov edx, 0x5c
mov rcx, r14
sub rbx, rax
dec rbx
mov qword [r14 + 0x48], rbx
call fcn.18001d8f0
lea rdx, str.Updating_GPT_header_2._n
mov dword [r14 + 0x10], eax
mov ebp, dword [rsi + 0x7f]
mov rcx, r13
imul rbp, rbx
call fcn.180016b80
mov r11, qword [rsp + 0x478]
test r11, r11
je 0x1800233a3
mov eax, dword [rsi + 0x7f]
mov rcx, rsi
imul rax, qword [r14 + 0x18]
mov qword [r11], rax
mov rax, qword [rsp + 0x478]
mov dword [rax + 8], 0x5c
mov rdx, qword [rsp + 0x478]
lea rax, [rsp + 0x44]
mov r8d, dword [rdx + 8]
lea r9, [rdx + 0xc]
mov rdx, qword [rdx]
mov qword [rsp + 0x20], rax
call fcn.180002c60
mov r11, qword [rsp + 0x478]
mov eax, dword [r11 + 8]
lea rcx, [r11 + rax + 0xc]
mov qword [rsp + 0x478], rcx
mov eax, dword [rsi + 0x7f]
lea rcx, [rsp + 0x40]
mov r9, r14
mov rdx, rax
mov qword [rsp + 0x20], rcx
mov r8d, eax
mov rcx, rsi
imul rdx, qword [r14 + 0x18]
call fcn.180002e70
test eax, eax
je 0x180023604
mov eax, dword [rsi + 0x7f]
cmp eax, dword [rsp + 0x40]
jne 0x180023604
mov edx, eax
mov rcx, r14
call fcn.18001d8f0
lea rcx, [rsp + 0x488]
mov ebx, eax
call qword [sym.imp.KERNEL32.dll_lstrlenA]
lea rdx, str._.8x
movsxd rcx, eax
mov r8d, ebx
lea rcx, [rsp + rcx + 0x488]
call qword [sym.imp.USER32.dll_wsprintfA]
lea rdx, str.GPT_header_2_updated._n
mov rcx, r13
call fcn.180016b80
lea rdx, str.Updating_GPT_1._n
mov rcx, r13
call fcn.180016b80
mov r11, qword [rsp + 0x478]
test r11, r11
je 0x180023487
mov qword [r11], rdi
mov rax, qword [rsp + 0x478]
mov r8d, r12d
mov dword [rax + 8], r12d
mov rdx, qword [rsp + 0x478]
lea rax, [rsp + 0x44]
lea r9, [rdx + 0xc]
mov rdx, qword [rdx]
mov rcx, rsi
mov qword [rsp + 0x20], rax
call fcn.180002c60
mov r11, qword [rsp + 0x478]
mov eax, dword [r11 + 8]
lea rcx, [r11 + rax + 0xc]
mov qword [rsp + 0x478], rcx
lea rax, [rsp + 0x40]
mov r9, r15
mov r8d, r12d
mov rdx, rdi
mov rcx, rsi
mov qword [rsp + 0x20], rax
call fcn.180002e70
test eax, eax
je 0x1800235ed
cmp dword [rsp + 0x40], r12d
jne 0x1800235ed
lea rdx, str.GPT_1_updated._n
mov rcx, r13
call fcn.180016b80
lea rdx, str.Updating_GPT_2._n
mov rcx, r13
call fcn.180016b80
mov edx, r12d
mov rcx, r15
call fcn.18001d8f0
lea rcx, [rsp + 0x488]
mov ebx, eax
call qword [sym.imp.KERNEL32.dll_lstrlenA]
lea rdx, str._.8x
movsxd rcx, eax
mov r8d, ebx
lea rcx, [rsp + rcx + 0x488]
call qword [sym.imp.USER32.dll_wsprintfA]
mov r11, qword [rsp + 0x478]
test r11, r11
je 0x180023562
mov qword [r11], rbp
mov rax, qword [rsp + 0x478]
mov r8d, r12d
mov dword [rax + 8], r12d
mov rdx, qword [rsp + 0x478]
lea rax, [rsp + 0x44]
lea r9, [rdx + 0xc]
mov rdx, qword [rdx]
mov rcx, rsi
mov qword [rsp + 0x20], rax
call fcn.180002c60
mov r11, qword [rsp + 0x478]
mov eax, dword [r11 + 8]
lea rcx, [r11 + rax + 0xc]
mov qword [rsp + 0x478], rcx
lea rax, [rsp + 0x40]
mov r9, r15
mov r8d, r12d
mov rdx, rbp
mov rcx, rsi
mov qword [rsp + 0x20], rax
call fcn.180002e70
test eax, eax
je 0x1800235d6
cmp dword [rsp + 0x40], r12d
jne 0x1800235d6
mov edx, r12d
mov rcx, r15
mov edi, 1
call fcn.18001d8f0
lea rcx, [rsp + 0x488]
mov ebx, eax
call qword [sym.imp.KERNEL32.dll_lstrlenA]
mov r8d, ebx
movsxd rdx, eax
lea rcx, [rsp + rdx + 0x488]
lea rdx, str._.8x.gpt
call qword [sym.imp.USER32.dll_wsprintfA]
lea rdx, str.GPT_2_updated._n
mov rcx, r13
call fcn.180016b80
xor ebp, ebp
jmp 0x18002362c
lea rdx, str.Failed_to_update_GPT_2._n
mov rcx, r13
call fcn.180016b80
mov edi, dword [rsp + 0x50]
xor ebp, ebp
jmp 0x18002362c
lea rdx, str.Failed_to_update_GPT_1._n
mov rcx, r13
call fcn.180016b80
mov edi, dword [rsp + 0x50]
xor ebp, ebp
jmp 0x18002362c
lea rdx, str.Failed_to_update_GPT_header_2._n
mov rcx, r13
call fcn.180016b80
mov edi, dword [rsp + 0x50]
xor ebp, ebp
jmp 0x18002362c
lea rdx, str.Failed_to_update_GPT_header_1._n
mov rcx, r13
call fcn.180016b80
mov edi, ebp
xor edx, edx
mov r8d, 0x8000
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_VirtualFree]
mov r15, qword [rsp + 0xaa0]
mov r12d, 2
xor edx, edx
mov r8d, 0x8000
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_VirtualFree]
mov r14, qword [rsp + 0xae8]
mov rcx, rsi
call fcn.180001b80
jmp 0x18002367d
lea rdx, str._tUnable_to_open_drive._n
mov rcx, r13
call fcn.180016c70
test rsi, rsi
je 0x1800236d4
mov rcx, rsi
call fcn.180001b80
mov rcx, qword [rsi + 0x77]
test rcx, rcx
je 0x1800236a1
xor edx, edx
mov r8d, 0x8000
call qword [sym.imp.KERNEL32.dll_VirtualFree]
xor edx, edx
mov r8d, 0x8000
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_VirtualFree]
jmp 0x1800236d4
lea rdx, str._tUnable_to_create_drive._n
mov rcx, r13
call fcn.180016c70
jmp 0x1800236d4
lea rdx, str._tPhysical_disk_index_error._n
mov rcx, r13
call fcn.180016c70
cmp qword [rsp + 0x480], 0
mov r13, qword [rsp + 0xae0]
mov rsi, qword [rsp + 0xad8]
je 0x180023779
lea rcx, [rsp + 0x488]
call qword [sym.imp.KERNEL32.dll_lstrlenA]
cmp eax, 0x2c
jne 0x180023763
mov qword [rsp + 0x30], rbp
lea r8d, [rax - 0x2b]
lea rcx, [rsp + 0x488]
xor r9d, r9d
mov edx, 0x40000000
mov dword [rsp + 0x28], ebp
mov dword [rsp + 0x20], r12d
call qword [sym.imp.KERNEL32.dll_CreateFileA]
mov rbx, rax
cmp rax, 0xffffffffffffffff
je 0x180023763
mov r8d, dword [rsp + 0x470]
mov rdx, qword [rsp + 0x480]
lea r9, [rsp + 0x40]
mov rcx, rax
mov qword [rsp + 0x20], rbp
call qword [sym.imp.KERNEL32.dll_WriteFile]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, qword [rsp + 0x480]
xor edx, edx
mov r8d, 0x8000
call qword [sym.imp.KERNEL32.dll_VirtualFree]
mov eax, edi
mov rcx, qword [rsp + 0xa90]
xor rcx, rsp
call fcn.18002d590
add rsp, 0xaa8
pop r12
pop rdi
pop rbp
pop rbx
ret