Function at 0x180004a50
Capabilities:
Check if file exists

Disassembly:
mov qword [rsp + 8], rcx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x80
mov qword [rsp + 0x50], 0xfffffffffffffffe
mov qword [rsp + 0xc8], rbx
mov r12, rdx
mov rsi, rcx
lea rcx, section..data
mov rax, qword [section..data]
call qword [rax + 0x18]
lea rdi, [rax + 0x18]
mov qword [rsp + 0x30], rdi
lea rdx, str.40651ff2ad0d11c58b8b225dbaa6339e06049d7e70c642efd746d242849725d15030f0f27152a6c4fbe1df9d7f8a51a768fdde10bea8529e90fcaa11a8c4b85c3d63b21d2326f943dfa6410ea15e346be778ec3a3d8b74e33c38d637df46cd8d5e4aa0d5b2b2c4b00a8ef35eae5b54131709564ba96352bf05bde4564ca62bb9b9426eefc0f387b403b5986c26fca8992d4874e92a8b0ac0fbd6640f0135b1bc66b2bba3571fc1819c3a7649c8934c305a9c859b086edc853d521d38dc4586bb28f095aa746c100966e493fa3c20e05ff8be3337005505f7a599a79db27541120be32b13057032d93ae4c7ef4018435968f767929d7da374e933cc51a8457503f842d963a65a715cdf2c06d178ebf7101a63f0e16f97af8daa698fd8b81b95f81c759d96d3a4e354e3318472ab879a057121a266ceed5f25173f3c2931e7723cf55b734425d047a878b644510e125aca842eeedc2a61f185b161084d2bde1e0b43e8c1a49b66406cb36dd52e6d641e76bacb37de71a51f6a0c28af6a4719926d9cbbbc55b55fa787f919adebc7c549ec06a8fe9fa3e03fc3731d499bcfad12e3727dab2549696d73cb02019f79c3aac0796cf50af9febe2d1e7785d79e4b9cfa3fa3988eee9f3f83f7dcaa957a98d7ee9ceb86a74060427fcb02019f79c3aac0d9e358ad0e247ba85c1e2aa4ed7ab29c311b3844e5d7aa6cdfbe90d43d8934e319ea49fcf781d3597a304447731ceaa88843500467028bc94a234eb27d1776d0335db2d7440c79c5498f824b0307f1f655b662e64b87261c720da8cc059979d30483248463175c68f396d006d0e2f2d61086329e3aed5eea32b53c4b7134e2cb140bf6a3c8afe399e5cb06e775fac3e8c42efcfb9d5b95ff07437ca0a4c8d0f5ee063bdc73565ba12374bc6c7455c2ba384c4f1261b21aa1f78a37a2369ad92f68e5a7805cde4603ea6c80cb74f77d491b95188fe50a188f8de7e53db915e260257c562bf99b91fd0483248463175c680fe0a671072ad5fc1529c6dbc182862f585163c4b5b7c0c9fd34e9dbb0fee4bc6e8d397c83f4a6306d1aedae0b6d9ba7d6a4933032e045d215c6eaaea9a887dd7fd8f2d6a66f81bf5ca245e8af68a53da77ac8356bf4f51603acada9912c414b4d5a9e1b9cd90191a4a404d3274bf265f7185c43bb020b4113785f7b78be4a5e54ff606f4974a2cf87273b91f5a710a37d05b344c290bef6ca7d29d979954b477e3359ef4be19fa68925947262f2733efe7a2924f94429feb4e81f2d88842b64eea7c12eae937f88b986f393f1013c184cd9c8d9aa54eaf8a19fbbbb0e55824f45654e877c788f20f0e42df0d5bc08aba474c23138b3bb24465688270f7fea05aff3b902b8b699d1b63838d76c7ba22584e3e6ea4c23820c072807b11aa94ed74e5c796a98102d9a6e113d4cfad695edcf6cc624bf7b95a2a6feb74f7f26133625d421ea8adb81e7021a17cf6268a92079809f366e115087f9ea3cb52f864adfa55ba24c8e61a37523b5ee7ace4ae662b9d84ff8d82121c364c9b671eadba0258a890f4c072904350a4cef0c625ef4696dfa89e1dcdd2e8a2b4020ee3a192fb2af14b40d42844472c7dae6e733f5cf1f332d62018493d4f79124eb8ab8f611b8c276790b95e6bb6f0c47642f2cb8e96025d34a97d03b4289faa6ca0f7b50562da9586473e46af20fb4e600552732240ec4bee1b0aec850cd9dc2fc7beff931fd25a47e9589b0ef1b6d0e12b6efc85ecfe0eca87c969e94bc112012a7afd57e7d34efa645efc5ed77262a9a97fac9ef7e52d420274e3674c74c7439bcb2ba9b9097da6f68f512c8043475e8f0c9a721ee6dff013b6f44a151c62b75de28a8d2162640d3447d24a6b595aa2696ea04c91c3e7838eb5b03b499ae67ca40ae05159ba6215906dee03afb97bff2eae914975f8c1bf586199a7667270c0f3316d9fe8b7cf10d515730e366e6eff6c1b992b3d43f120a3cf4555e5d3a00483434bdec2b8a58cb1551b61c496defb022cdc16de852f2bd94b768cb443b18907d58e58c7ecbdba4f2398207e1a0426650a94c764ff4696783f0783edbf842d963a65a715c538ca0318f8ba64fb4c91f4844bbb91cbbc1d622f647fd1ff1af18afb8ff3a126daf32c18ffef8f787953cdeb30c9c75f7bbc69892e87f72d985f8490e519bd40af6e48b57c154cd41daf013e51bad24693d08ca27748a30bae1f407e761f6c5c4290ffe9cefa2292c63aaddd2ed6e99f8d1729ad610fc5c7d146b0d328dc0bc03ee2d08ed36a8a381da16248f15f4674d0ac49a9a08df5c00f122223bf68081ae551942af5617e2dff2aff5dd1130531a9d4f3f1b96dadcb57c63651fc048cd48c3c465ff4261fd1d5a35015b1ad0110b72b3e80d1e7f521a5ca59d0fdc71ba0e457deda6ac0db96cb1ffa83a9c4cb813b3ad54420898ae6d5c8dc867250410c5a71615dd7ce39b45f2afa84b2035c52b4020ee3a192fb20d708a5fbdc89f837164793f4a173409e6eff6c1b992b3d418f54c37e35663967db5833be880285083189dfa0379426a41599b44712f8f4e905cb2eff12d48adc8e791a649aa10404c13ed25f3e64f7a462743087e899f9f1a5fa063878087164b26a4b31240ea5bf1816c3732b84277bdfe2c894e586091226d630bd7a14c4132149e849d1b9326b57c63651fc048cd743fa3c47d1804fc1d8304b311757990fa6891646d5cd7086c6c3c351310e7bf59d13f09b3836739a3333c94978c6c1d47d3518b207881a61c6b684b23446a8c4f9b934679b65b6013b888259a2c67a5650e0680a2b45c2bdee8d5fdcfe6492d4d888c2c4dc4c6952ac3b9ac62f1e8442aa8b809c1fc93d2ee8f7346f5f040a649cff3170907fef5
or r15, 0xffffffffffffffff
test rdx, 0xffffffffffff0000
jne 0x180004ad4
movzx ebx, dx
xor edx, edx
mov ecx, ebx
call fcn.180004180
test rax, rax
je 0x180004af5
mov r8d, ebx
mov rdx, rax
lea rcx, [rsp + 0x30]
call fcn.1800030d0
mov rdi, qword [rsp + 0x30]
jmp 0x180004af5
xor eax, eax
mov rcx, r15
mov rdi, rdx
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rcx, [rsp + 0x30]
call fcn.180001570
mov rdi, qword [rsp + 0x30]
xor r8d, r8d
mov rdx, rdi
lea rcx, [rsp + 0x48]
call fcn.180010e50
nop
lea rdx, [rdi - 0x18]
mov rbx, qword [rdx]
xor r14d, r14d
cmp dword [rdx + 8], r14d
je 0x180004b60
cmp dword [rdx + 0x10], r14d
jge 0x180004b37
cmp dword [rdi - 0xc], r14d
jge 0x180004b2d
mov ecx, 0x80070057
call fcn.1800019b0
int3
mov dword [rdi - 0x10], r14d
mov word [rdi], r14w
jmp 0x180004b60
mov eax, r15d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x180004b4e
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.WS2_32.dll_htonl]
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x30], rax
mov dword [rsp + 0xd8], r14d
movzx ebx, byte [rsp + 0xd0]
lea r9, [rsp + 0xd8]
lea r8, [0x1800296f4]
lea rdx, [rsp + 0x38]
lea rcx, [rsp + 0x48]
call fcn.180008cb0
nop
mov rax, qword [rsp + 0x38]
cmp dword [rax - 0x10], 0
je 0x180004d45
lea rcx, section..data
mov rax, qword [section..data]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x40], rax
mov r9, qword [rsp + 0x38]
mov r8, qword [rsi]
lea rdx, [0x1800296f8]
lea rcx, [rsp + 0x40]
call fcn.1800018d0
mov rdi, qword [rsp + 0x40]
mov rcx, rdi
call qword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x180004d29
mov rdx, qword [r12 + 0x18]
test rdx, rdx
jne 0x180004bf6
mov rcx, r14
jmp 0x180004c02
mov rcx, qword [r12 + 0x28]
sub rcx, rdx
sar rcx, 3
mov rsi, qword [r12 + 0x20]
mov rax, rsi
sub rax, rdx
sar rax, 3
cmp rax, rcx
jae 0x180004c52
xor eax, eax
mov byte [rsp + 0xd0], al
lea r9, [r12 + 0x10]
mov byte [rsp + 0x28], al
mov byte [rsp + 0x20], bl
lea r8, [rsp + 0x38]
lea edx, [rax + 1]
mov rcx, rsi
call fcn.18000a080
lea r11, [rsi + 8]
mov qword [r12 + 0x20], r11
mov rsi, qword [rsp + 0xc0]
jmp 0x180004d29
cmp rdx, rsi
jbe 0x180004c5c
call fcn.180014258
mov rbp, qword [r12]
mov qword [rsp + 0x60], rbp
mov qword [rsp + 0x68], rsi
mov rcx, qword [r12 + 0x20]
mov r13, qword [r12 + 0x18]
mov rax, rcx
sub rax, r13
test rax, 0xfffffffffffffff8
jne 0x180004c87
mov rsi, r14
jmp 0x180004ca8
cmp r13, rcx
jbe 0x180004c91
call fcn.180014258
test rbp, rbp
je 0x180004c9c
cmp rbp, qword [r12]
je 0x180004ca1
call fcn.180014258
sub rsi, r13
sar rsi, 3
movaps xmm0, xmmword [rsp + 0x60]
movdqa xmmword [rsp + 0x70], xmm0
lea r9, [rsp + 0x38]
mov r8d, 1
lea rdx, [rsp + 0x70]
mov rcx, r12
call fcn.180009900
mov r13, qword [r12 + 0x18]
cmp r13, qword [r12 + 0x20]
jbe 0x180004cdc
call fcn.180014258
mov rbp, qword [r12]
test rbp, rbp
jne 0x180004cef
call fcn.180014258
mov r11, r14
jmp 0x180004cf3
mov r11, qword [rbp]
lea rcx, [r13 + rsi*8]
cmp rcx, qword [r11 + 0x20]
ja 0x180004d12
test rbp, rbp
je 0x180004d09
mov rax, qword [rbp]
jmp 0x180004d0c
mov rax, r14
cmp rcx, qword [rax + 0x18]
jae 0x180004d21
call fcn.180014258
mov rsi, qword [rsp + 0xc0]
jmp 0x180004d29
mov rsi, qword [rsp + 0xc0]
lea rdx, [rdi - 0x18]
mov eax, r15d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x180004d45
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.WS2_32.dll_htonl]
nop
mov rdx, qword [rsp + 0x38]
add rdx, 0xffffffffffffffe8
mov eax, r15d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x180004d65
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.WS2_32.dll_htonl]
cmp dword [rsp + 0xd8], 0
jg 0x180004b70
mov rax, qword [r12 + 0x20]
sub rax, qword [r12 + 0x18]
sar rax, 3
test rax, rax
setne r14b
mov rdx, qword [rsp + 0x48]
add rdx, 0xffffffffffffffe8
mov eax, r15d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x180004da9
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.WS2_32.dll_htonl]
nop
mov rdx, qword [rsp + 0x30]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], r15d
dec r15d
test r15d, r15d
jg 0x180004dc9
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.WS2_32.dll_htonl]
mov eax, r14d
mov rbx, qword [rsp + 0xc8]
add rsp, 0x80
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret