Function at 0x1007d350
Capabilities:
Create directory

Disassembly:
push rsi
push rdi
push rbx
sub rsp, 0x40
cmp byte [rcx], 0
je 0x1007d36e
mov rcx, rdx
mov rdx, r8
add rsp, 0x40
pop rbx
pop rdi
pop rsi
jmp 0x1007d3e0
lea rcx, [rsp + 0x28]
call fcn.1009f570
mov rdi, qword [rsp + 0x28]
mov rsi, qword [rsp + 0x30]
test rdi, rdi
je 0x1007d39e
mov rcx, rdi
xor edx, edx
call sub.kernel32.dll_CreateDirectoryW
test eax, eax
je 0x1007d3a3
xor ebx, ebx
test rsi, rsi
jne 0x1007d3b7
jmp 0x1007d3cb
mov rbx, rsi
jmp 0x1007d3cb
call sub.kernel32.dll_GetLastError
mov ebx, eax
shl rbx, 0x20
or rbx, 2
test rsi, rsi
je 0x1007d3cb
add rsi, rsi
mov r8d, 2
mov rcx, rdi
mov rdx, rsi
call fcn.100028e0
mov rax, rbx
add rsp, 0x40
pop rbx
pop rdi
pop rsi
ret
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x238
mov r12, rdx
mov r15, rcx
lea rcx, [rsp + 0x20]
mov rdx, r15
mov r8, r12
call fcn.1009f0a0
movzx r13d, byte [rsp + 0x20]
mov rax, qword [rsp + 0x30]
mov rdx, qword [rsp + 0x40]
mov ecx, 6
movzx ebp, r13b
lea rdi, [0x1007dab8]
movsxd rsi, dword [rdi + rbp*4]
add rsi, rdi
mov rdi, r12
mov rbp, r15
jmp rsi
add rax, 4
mov rcx, rax
jmp case.0x1007d436.2
lea rcx, [rdx + 1]
test rdx, rdx
cmove rcx, rdx
add rcx, rax
add rcx, 8
jmp case.0x1007d436.2
lea rcx, [rdx + 1]
test rdx, rdx
cmove rcx, rdx
add rcx, rax
add rcx, 2
jmp case.0x1007d436.2
mov ecx, 2
cmp rcx, r12
ja 0x1007da45
lea rbp, [r15 + rcx]
mov rdi, r12
sub rdi, rcx
test rdi, rdi
je 0x1007d49a
movzx eax, byte [rbp]
cmp al, 0x5c
sete cl
cmp al, 0x2f
sete dil
or dil, cl
jmp 0x1007d49c
xor edi, edi
mov rax, qword [rsp + 0x40]
mov qword [rsp + 0x12f], rax
movups xmm0, xmmword [rsp + 0x21]
movups xmm1, xmmword [rsp + 0x31]
movaps xmmword [rsp + 0x120], xmm1
movaps xmmword [rsp + 0x110], xmm0
lea r14, str.capacity_overflow
lea rcx, [rsp + 0x20]
mov rdx, r14
xor r8d, r8d
call fcn.1009f0a0
movzx eax, byte [rsp + 0x20]
mov rdx, qword [rsp + 0x30]
mov rbp, qword [rsp + 0x40]
mov ebp, dword [rsp + 0x40]
mov ebp, dword [rsp + 0x40]
mov ecx, 6
movzx esi, al
lea rbx, [0x1007dad4]
movsxd rsi, dword [rbx + rsi*4]
add rsi, rbx
jmp rsi
add rdx, 4
add edx, 4
mov rcx, rdx
jmp 0x1007d530
lea rcx, [rbp + 1]
test rbp, rbp
cmove rcx, rbp
add rcx, rdx
add rcx, 8
jmp 0x1007d530
invalid
adc cl, byte [rax - 0x73]
add qword [r8 - 0x7b], r9
in eax, dx
lea rcx, [rbp + 1]
test rbp, rbp
cmove rcx, rbp
add rcx, rdx
add rcx, 2
test rcx, rcx
jne case.0x1007d4ff.2
mov rcx, qword [rsp + 0x40]
mov qword [rsp + 0x15f], rcx
movups xmm0, xmmword [rsp + 0x21]
movups xmm1, xmmword [rsp + 0x31]
movaps xmmword [rsp + 0x150], xmm1
movaps xmmword [rsp + 0x140], xmm0
test r12, r12
jne 0x1007d579
cmp r13b, 3
setae cl
cmp al, 3
setb dl
xor dl, cl
jne 0x1007da25
cmp r13b, 6
je 0x1007d5a6
mov rcx, qword [rsp + 0x12f]
mov qword [rsp + 0x3f], rcx
movaps xmm0, xmmword [rsp + 0x110]
movaps xmm1, xmmword [rsp + 0x120]
movaps xmmword [rsp + 0x30], xmm1
movaps xmmword [rsp + 0x20], xmm0
mov rcx, qword [rsp + 0x3f]
mov qword [rsp + 0x18f], rcx
movaps xmm0, xmmword [rsp + 0x20]
movaps xmm1, xmmword [rsp + 0x30]
movaps xmmword [rsp + 0x180], xmm1
movaps xmmword [rsp + 0x170], xmm0
cmp al, 6
je 0x1007d5f8
mov rcx, qword [rsp + 0x15f]
mov qword [rsp + 0x3f], rcx
movaps xmm0, xmmword [rsp + 0x140]
movaps xmm1, xmmword [rsp + 0x150]
movaps xmmword [rsp + 0x30], xmm1
movaps xmmword [rsp + 0x20], xmm0
mov rcx, qword [rsp + 0x3f]
mov qword [rsp + 0x1bf], rcx
movaps xmm0, xmmword [rsp + 0x20]
movaps xmm1, xmmword [rsp + 0x30]
movaps xmmword [rsp + 0x1b0], xmm1
movaps xmmword [rsp + 0x1a0], xmm0
mov qword [rsp + 0x90], r15
mov qword [rsp + 0x98], r12
mov byte [rsp + 0xa0], r13b
movaps xmm0, xmmword [rsp + 0x170]
movaps xmm1, xmmword [rsp + 0x180]
movups xmmword [rsp + 0xa1], xmm0
movups xmmword [rsp + 0xb1], xmm1
mov rcx, qword [rsp + 0x18f]
mov qword [rsp + 0xc0], rcx
mov byte [rsp + 0xc8], dil
mov word [rsp + 0xc9], 0x200
mov qword [rsp + 0xd0], r14
mov qword [rsp + 0xd8], 0
mov byte [rsp + 0xe0], al
movaps xmm0, xmmword [rsp + 0x1a0]
movaps xmm1, xmmword [rsp + 0x1b0]
movups xmmword [rsp + 0xe1], xmm0
movups xmmword [rsp + 0xf1], xmm1
mov rax, qword [rsp + 0x1bf]
mov qword [rsp + 0x100], rax
mov word [rsp + 0x108], 0
mov byte [rsp + 0x10a], 2
lea rcx, [rsp + 0x1c8]
lea rdx, [rsp + 0x90]
call fcn.1008b470
cmp byte [rsp + 0x1d8], 0xa
je 0x1007d7d4
lea rsi, [rsp + 0x58]
lea rdi, [rsp + 0x200]
lea rbx, [rsp + 0xd0]
lea r14, [rsp + 0x20]
lea r13, [rsp + 0x1c8]
lea rbp, [rsp + 0x90]
nop word cs:[rax + rax]
mov rcx, rdi
mov rdx, rbx
call fcn.1008b470
cmp byte [rsp + 0x210], 0xa
je 0x1007d7f1
mov rax, qword [rsp + 0x1f8]
mov qword [rsp + 0x50], rax
movups xmm0, xmmword [rsp + 0x1c8]
movups xmm1, xmmword [rsp + 0x1d8]
movups xmm2, xmmword [rsp + 0x1e8]
movaps xmmword [rsp + 0x40], xmm2
movaps xmmword [rsp + 0x30], xmm1
movaps xmmword [rsp + 0x20], xmm0
mov rax, qword [rsp + 0x230]
mov qword [rsi + 0x30], rax
movups xmm0, xmmword [rsp + 0x200]
movups xmm1, xmmword [rsp + 0x210]
movups xmm2, xmmword [rsp + 0x220]
movups xmmword [rsi + 0x20], xmm2
movups xmmword [rsi + 0x10], xmm1
movups xmmword [rsi], xmm0
mov rcx, r14
mov rdx, rsi
call fcn.10098230
test al, al
je 0x1007d7f1
mov rcx, r13
mov rdx, rbp
call fcn.1008b470
cmp byte [rsp + 0x1d8], 0xa
jne 0x1007d730
lea rcx, [rsp + 0x20]
lea rdx, [rsp + 0xd0]
call fcn.1008b470
cmp byte [rsp + 0x30], 0xa
je 0x1007da25
lea rcx, [rsp + 0x20]
mov rdx, r15
mov r8, r12
call fcn.1009f570
mov rsi, qword [rsp + 0x20]
mov rdi, qword [rsp + 0x28]
test rsi, rsi
je 0x1007d858
mov rcx, rsi
xor edx, edx
call sub.kernel32.dll_CreateDirectoryW
test eax, eax
je 0x1007d82a
xor ebx, ebx
test rdi, rdi
jne 0x1007d841
jmp 0x1007da27
call sub.kernel32.dll_GetLastError
mov ebx, eax
shl rbx, 0x20
or rbx, 2
mov r13, rbx
test rdi, rdi
je 0x1007d864
add rdi, rdi
add edi, edi
mov r8d, 2
mov rcx, rsi
mov rdx, rdi
call fcn.100028e0
mov edx, dword [rax - 8]
dec dword [rax - 0x77]
invalid
mov edx, dword [rax - 8]
dec dword [rax - 0x77]
fisttp word [rcx - 0x77]
std
mov r13, rdi
test rdi, rdi
je 0x1007da25
mov esi, r13d
and esi, 3
lea rax, [0x1007daf0]
jg 0x1007d871
add byte [rax], al
jg 0x1007d871
add al, byte [rax]
add byte [rax + 0x63], cl
or al, 0xb0
add byte [rax], al
movsxd rcx, dword [rax + rsi*4]
add rcx, rax
jmp rcx
movzx ecx, byte [r13 + 0x10]
test cl, cl
jne 0x1007d966
jmp 0x1007d89f
mov rcx, r13
mov ecx, ebp
shr rcx, 0x20
call fcn.100a6480
mov ecx, eax
test cl, cl
jne 0x1007d966
cmp esi, 1
je 0x1007d8b1
jmp 0x1007d8f9
cmp byte [r13 + 0xf], 0
jne 0x1007d966
lea r14, [r13 - 1]
lea rsi, [r13 + 7]
invalid
mov rcx, qword [r13 - 1]
mov rax, qword [r13 + 7]
call qword [rax]
mov rax, qword [rsi]
mov rdx, qword [rax + 8]
test rdx, rdx
je 0x1007d8db
invalid
mov r8, qword [rax + 0x10]
mov rcx, qword [r14]
mov ecx, dword [rsi]
mov ecx, dword [rsi]
call fcn.100028e0
mov edx, 0x18
mov r8d, 8
mov rcx, r14
call fcn.100028e0
jmp 0x1007d8f9
mov rax, r13
shr rax, 0x20
jne 0x1007d966
mov rcx, r15
mov rdx, r12
call fcn.1008d100
test rax, rax
je 0x1007d9c9
mov rcx, rax
call 0x1007d3e0
mov rbx, rax
test rax, rax
jne 0x1007da27
lea rcx, [rsp + 0x20]
mov rdx, r15
mov r8, r12
call fcn.1009f570
mov rdi, qword [rsp + 0x20]
mov rsi, qword [rsp + 0x28]
test rdi, rdi
je 0x1007d9d2
mov rcx, rdi
xor edx, edx
call sub.kernel32.dll_CreateDirectoryW
test eax, eax
je 0x1007d9d7
xor ebx, ebx
test rsi, rsi
jne 0x1007d9eb
jmp 0x1007da27
mov rcx, r15
mov rdx, r12
call fcn.1008e590
xor ebx, ebx
test al, al
cmove rbx, r13
cmp esi, 1
sete cl
and cl, al
cmp cl, 1
jne 0x1007da27
lea r14, [r13 - 1]
lea rsi, [r13 + 7]
mov rcx, qword [r13 - 1]
mov rax, qword [r13 + 7]
call qword [rax]
mov rax, qword [rsi]
mov rdx, qword [rax + 8]
test rdx, rdx
je 0x1007d9b4
mov r8, qword [rax + 0x10]
mov rcx, qword [r14]
call fcn.100028e0
mov edx, 0x18
mov r8d, 8
mov rcx, r14
call fcn.100028e0
jmp 0x1007da27
lea rbx, str.failed_to_create_whole_tree
jmp 0x1007da27
mov rbx, rsi
jmp 0x1007da02
call sub.kernel32.dll_GetLastError
mov ebx, eax
shl rbx, 0x20
or rbx, 2
test rsi, rsi
je 0x1007da3e
add rsi, rsi
mov r8d, 2
mov rcx, rdi
mov rdx, rsi
call fcn.100028e0
mov rsi, rbx
mov qword [rsp + 0x20], rsi
test rsi, rsi
je 0x1007da25
mov rcx, r15
mov rdx, r12
call fcn.1008e590
test al, al
je 0x1007da27
lea rcx, [rsp + 0x20]
call fcn.1005bef0
xor ebx, ebx
mov rax, rbx
add rsp, 0x238
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop rsi
pop rsi
pop r15
ret
mov qword [rsp + 0x20], rbx
mov dword [rsp + 0x20], ebx
jmp 0x1007da0c
lea r8, [0x101222c8]
mov rdx, r12
call fcn.100ee2a0
ud2
mov ecx, 2
lea r8, [0x101222c8]
xor edx, edx
call fcn.100ee2a0
ud2