Function at 0x180055198
Capabilities:
Read file on windows
Write file on windows

Disassembly:
mov qword [rsp + 0x18], r8
mov qword [rsp + 8], rcx
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0xf0
mov qword [rsp + 0xe8], 0xfffffffffffffffe
mov r12, r9
mov r15, r8
mov ebx, edx
mov rdi, rcx
xor r14d, r14d
mov esi, r14d
mov dword [rsp + 0x38], r14d
lea r13d, [r14 + 1]
mov byte [rsp + 0x138], r13b
add rcx, 0xc0
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
nop
mov eax, 0x7530c9ef
cmp ebx, eax
ja 0x18005597a
cmp ebx, eax
je 0x180055967
cmp ebx, 0x96a1b36
je 0x1800558e2
cmp ebx, 0x20c9a73f
je 0x1800556bd
cmp ebx, 0x233b5e16
je 0x1800553bf
cmp ebx, 0x360db31d
je 0x18005524e
cmp ebx, 0x52caac99
je 0x180055b67
cmp ebx, 0x5aeff338
jne 0x1800559b2
jmp 0x180055b67
mov r14d, VariantTimeToDosDateTime
cmp word [r12], r14w
je 0x180055278
mov rcx, r12
call qword [sym.imp.OLEAUT32.dll_VariantCopy]
xor ecx, ecx
cmp eax, ecx
jge 0x180055271
mov ecx, eax
call fcn.18007d370
mov word [r12], r14w
jmp 0x18005527a
xor ecx, ecx
mov word [r12 + 8], cx
xor edx, edx
mov rcx, r15
call fcn.180023a18
mov rdx, rax
lea rcx, [rsp + 0x48]
call fcn.180016ad0
nop
mov rsi, qword [rsp + 0x48]
xor edx, edx
cmp rsi, rdx
je 0x1800552bf
mov rcx, qword [rsi]
cmp rcx, rdx
je 0x1800552bb
call qword [sym.imp.OLEAUT32.dll_VariantInit]
mov rsi, qword [rsp + 0x48]
xor edx, edx
jmp 0x1800552c1
mov eax, edx
jmp 0x1800552c1
mov eax, edx
cmp eax, edx
jbe 0x180055370
cmp rsi, rdx
je 0x1800552e6
cmp qword [rsi + 8], rdx
jne 0x1800552e0
mov rcx, qword [rsi]
call fcn.18007d5b0
mov qword [rsi + 8], rax
mov rcx, qword [rsi + 8]
jmp 0x1800552e9
mov rcx, rdx
lea rdx, [0x1800967ec]
call fcn.180068c30
mov rbx, rax
xor edx, edx
cmp rax, rdx
je 0x180055366
cmp dword [rdi + 0xb8], edx
jbe 0x180055366
mov ecx, dword [rdi + 0xb0]
sub ecx, dword [rdi + 0xa8]
movsxd rdx, ecx
mov r9, rax
mov r8, r13
mov rcx, qword [rdi + 0xa8]
call fcn.18006739c
mov rcx, rbx
call fcn.180067850
cmp word [r12], r14w
je 0x180055354
mov rcx, r12
call qword [sym.imp.OLEAUT32.dll_VariantCopy]
xor edx, edx
cmp eax, edx
jge 0x18005534d
mov ecx, eax
call fcn.18007d370
mov word [r12], r14w
jmp 0x180055356
xor edx, edx
or ebx, 0xffffffff
mov word [r12 + 8], bx
mov rsi, qword [rsp + 0x48]
jmp 0x180055373
or ebx, 0xffffffff
mov rsi, qword [rsp + 0x48]
jmp 0x180055373
or ebx, 0xffffffff
cmp rsi, rdx
je 0x180055b67
mov eax, ebx
lock xadd dword [rsi + 0x10], eax
add eax, ebx
jne 0x180055b67
cmp rsi, rdx
je 0x180055b67
mov rcx, qword [rsi]
cmp rcx, rdx
je 0x1800553a4
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
xor edx, edx
mov rcx, qword [rsi + 8]
cmp rcx, rdx
je 0x1800553b2
call fcn.180064200
mov rcx, rsi
call fcn.18006419c
jmp 0x180055b67
mov dword [rsp + 0x40], r14d
mov dword [rsp + 0x3c], r14d
lea rdx, [rsp + 0x3c]
lea rcx, [rsp + 0x40]
call fcn.18005d0f4
mov r12d, 8
cmp dword [rsp + 0x40], r12d
jle 0x1800553ec
mov byte [rdi + 0x100], r13b
mov rbx, qword [rdi + 0xf0]
cmp rbx, r14
je 0x18005540f
mov rcx, rbx
call fcn.180053f5c
mov rcx, rbx
call fcn.18006419c
mov qword [rdi + 0xf0], r14
cmp qword [rdi + 0xf8], r14
jne 0x180055439
mov rcx, r12
call fcn.180064d40
cmp rax, r14
je 0x18005542f
mov rcx, rax
call fcn.1800550ac
jmp 0x180055432
mov rax, r14
mov qword [rdi + 0xf8], rax
mov rcx, qword [r15 + 0x20]
sub rcx, qword [r15 + 0x18]
movabs rax, 0x2aaaaaaaaaaaaaab
imul rcx
mov rbx, rdx
sar rbx, 2
mov rax, rbx
shr rax, 0x3f
add rbx, rax
cmp ebx, r14d
jle 0x180055b67
xor edx, edx
mov rcx, r15
call fcn.180023a18
mov rdx, rax
lea rcx, [rsp + 0x70]
call fcn.180016ad0
nop
cmp ebx, r13d
jle 0x180055492
mov edx, r13d
mov rcx, r15
call fcn.180023a18
jmp 0x1800554bf
mov word [rsp + 0xd0], r12w
lea rcx, [0x18008cc60]
call fcn.18007d420
mov qword [rsp + 0xd8], rax
lea rax, [rsp + 0xd0]
mov esi, r13d
mov dword [rsp + 0x38], r13d
mov rdx, rax
lea rcx, [rsp + 0x60]
call fcn.180016ad0
nop
test r13b, sil
je 0x1800554e7
and esi, 0xfffffffe
mov dword [rsp + 0x38], esi
lea rcx, [rsp + 0xd0]
call qword [sym.imp.OLEAUT32.dll_VariantCopy]
cmp ebx, 2
jle 0x1800554fb
mov edx, 2
mov rcx, r15
call fcn.180023a18
jmp 0x180055527
mov word [rsp + 0xb8], r12w
lea rcx, [0x18008cc60]
call fcn.18007d420
mov qword [rsp + 0xc0], rax
lea rax, [rsp + 0xb8]
or esi, 2
mov dword [rsp + 0x38], esi
mov rdx, rax
lea rcx, [rsp + 0x68]
call fcn.180016ad0
nop
test sil, 2
je 0x180055549
lea rcx, [rsp + 0xb8]
call qword [sym.imp.OLEAUT32.dll_VariantCopy]
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov ecx, gethostbyname
call fcn.180064d40
mov rcx, rax
cmp rax, r14
je 0x1800555cd
mov rax, qword [rsp + 0x68]
mov qword [rsp + 0xa0], rax
cmp rax, r14
je 0x18005557b
lock add dword [rax + 0x10], r13d
mov rax, qword [rsp + 0x60]
mov qword [rsp + 0xa8], rax
cmp rax, r14
je 0x180055592
lock add dword [rax + 0x10], r13d
mov rax, qword [rsp + 0x70]
mov qword [rsp + 0x98], rax
cmp rax, r14
je 0x1800555a9
lock add dword [rax + 0x10], r13d
mov qword [rsp + 0x20], rdi
lea r9, [rsp + 0xa0]
lea r8, [rsp + 0xa8]
lea rdx, [rsp + 0x98]
call fcn.180053e10
jmp 0x1800555d0
mov rax, r14
mov qword [rdi + 0xf0], rax
mov rcx, rax
call fcn.180054a24
nop
mov rsi, qword [rsp + 0x68]
cmp rsi, r14
je 0x180055628
or ebx, 0xffffffff
mov eax, ebx
lock xadd dword [rsi + 0x10], eax
add eax, ebx
jne 0x180055621
cmp rsi, r14
je 0x180055621
mov rcx, qword [rsi]
cmp rcx, r14
je 0x18005560b
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
mov rcx, qword [rsi + 8]
cmp rcx, r14
je 0x180055619
call fcn.180064200
mov rcx, rsi
call fcn.18006419c
mov qword [rsp + 0x68], r14
jmp 0x18005562b
or ebx, 0xffffffff
mov rsi, qword [rsp + 0x60]
cmp rsi, r14
je 0x18005566e
mov eax, ebx
lock xadd dword [rsi + 0x10], eax
add eax, ebx
jne 0x180055669
cmp rsi, r14
je 0x180055669
mov rcx, qword [rsi]
cmp rcx, r14
je 0x180055653
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
mov rcx, qword [rsi + 8]
cmp rcx, r14
je 0x180055661
call fcn.180064200
mov rcx, rsi
call fcn.18006419c
mov qword [rsp + 0x60], r14
mov rsi, qword [rsp + 0x70]
cmp rsi, r14
je 0x180055b67
mov eax, ebx
lock xadd dword [rsi + 0x10], eax
add eax, ebx
jne 0x180055b67
cmp rsi, r14
je 0x180055b67
mov rcx, qword [rsi]
cmp rcx, r14
je 0x1800556a2
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
mov rcx, qword [rsi + 8]
cmp rcx, r14
je 0x1800556b0
call fcn.180064200
mov rcx, rsi
call fcn.18006419c
jmp 0x180055b67
xor edx, edx
mov rcx, r15
call fcn.180023a18
mov rbx, rax
lea rcx, [rsp + 0x80]
call qword [sym.imp.OLEAUT32.dll_VariantClear]
mov rdx, rbx
lea rcx, [rsp + 0x80]
call qword [sym.imp.OLEAUT32.dll_VariantCopyInd]
cmp eax, r14d
jge 0x1800556f6
mov ecx, eax
call fcn.18007d370
nop
movzx eax, word [rsp + 0x80]
mov ecx, 0x2000
and ax, cx
cmp ax, cx
jne 0x1800557c8
lea r8, [rsp + 0x34]
mov edx, r13d
mov rcx, qword [rsp + 0x88]
call qword [sym.imp.OLEAUT32.dll_SafeArrayGetLBound]
cmp eax, r14d
jne 0x1800558cf
lea rdx, [rsp + 0xb0]
mov rcx, qword [rsp + 0x88]
call qword [sym.imp.OLEAUT32.dll_SafeArrayUnaccessData]
cmp eax, r14d
jl 0x1800558cf
mov ecx, dword [rsp + 0x34]
mov eax, ecx
sub eax, dword [rdi + 0xa8]
add eax, dword [rdi + 0xb0]
cmp eax, dword [rdi + 0xb8]
jb 0x180055775
mov edx, ecx
mov rcx, rdi
call fcn.180052e78
mov ecx, dword [rsp + 0x34]
movsxd r8, ecx
mov rdx, qword [rsp + 0xb0]
mov rcx, qword [rdi + 0xb0]
call fcn.180066290
movsxd r11, dword [rsp + 0x34]
add qword [rdi + 0xb0], r11
mov rcx, qword [rsp + 0x88]
call qword [sym.imp.OLEAUT32.dll_SafeArrayGetElement]
mov ecx, dword [rdi + 0xb0]
sub ecx, dword [rdi + 0xa8]
mov eax, dword [rdi + 0xbc]
cmp eax, ecx
cmova ecx, eax
mov dword [rdi + 0xbc], ecx
jmp 0x1800558cf
xor edx, edx
mov rcx, r15
call fcn.180023a18
mov rdx, rax
lea rcx, [rsp + 0x50]
call fcn.180016ad0
nop
mov rbx, qword [rsp + 0x50]
cmp rbx, r14
je 0x180055806
mov rcx, qword [rbx]
cmp rcx, r14
je 0x180055801
call qword [sym.imp.OLEAUT32.dll_VariantInit]
mov esi, eax
mov rbx, qword [rsp + 0x50]
jmp 0x180055809
mov esi, r14d
jmp 0x180055809
mov esi, r14d
mov eax, esi
sub eax, dword [rdi + 0xa8]
add eax, dword [rdi + 0xb0]
cmp eax, dword [rdi + 0xb8]
jb 0x18005582e
mov edx, esi
mov rcx, rdi
call fcn.180052e78
mov rbx, qword [rsp + 0x50]
cmp rbx, r14
je 0x18005584b
cmp qword [rbx + 8], r14
jne 0x180055845
mov rcx, qword [rbx]
call fcn.18007d5b0
mov qword [rbx + 8], rax
mov rdx, qword [rbx + 8]
jmp 0x18005584e
mov rdx, r14
mov ebx, esi
mov r8d, esi
mov rcx, qword [rdi + 0xb0]
call fcn.180066290
add qword [rdi + 0xb0], rbx
mov rax, qword [rdi + 0xb0]
mov byte [rax], r14b
mov ecx, dword [rdi + 0xb0]
sub ecx, dword [rdi + 0xa8]
mov eax, dword [rdi + 0xbc]
cmp eax, ecx
cmova ecx, eax
mov dword [rdi + 0xbc], ecx
mov rsi, qword [rsp + 0x50]
cmp rsi, r14
je 0x1800558cf
or ebx, 0xffffffff
mov eax, ebx
lock xadd dword [rsi + 0x10], eax
add eax, ebx
jne 0x1800558cf
cmp rsi, r14
je 0x1800558cf
mov rcx, qword [rsi]
cmp rcx, r14
je 0x1800558b8
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
mov rcx, qword [rsi + 8]
cmp rcx, r14
je 0x1800558c6
call fcn.180064200
mov rcx, rsi
call fcn.18006419c
nop
lea rcx, [rsp + 0x80]
call qword [sym.imp.OLEAUT32.dll_VariantCopy]
jmp 0x180055b67
mov rdx, qword [rdi + 0xb0]
lea rcx, [rsp + 0x78]
call fcn.180002188
nop
mov rcx, qword [rdi + 0xb0]
call fcn.180064df0
add qword [rdi + 0xb0], rax
lea rdx, [rsp + 0x78]
mov rcx, r12
call fcn.18000d7ac
nop
mov rsi, qword [rsp + 0x78]
cmp rsi, r14
je 0x180055b67
or ebx, 0xffffffff
mov eax, ebx
lock xadd dword [rsi + 0x10], eax
add eax, ebx
jne 0x180055b67
cmp rsi, r14
je 0x180055b67
mov rcx, qword [rsi]
cmp rcx, r14
je 0x18005594c
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
mov rcx, qword [rsi + 8]
cmp rcx, r14
je 0x18005595a
call fcn.180064200
mov rcx, rsi
call fcn.18006419c
jmp 0x180055b67
mov rax, qword [rdi + 0xa8]
mov qword [rdi + 0xb0], rax
jmp 0x180055b67
cmp ebx, 0xa1115ba3
je 0x180055b67
cmp ebx, 0xa7b80ac1
je 0x180055b67
cmp ebx, 0xd78adf64
je 0x180055b67
cmp ebx, 0xf24933cc
je 0x180055b67
cmp ebx, 0xf72dd1c6
je 0x1800559c2
mov r13b, r14b
mov byte [rsp + 0x138], r14b
jmp 0x180055b67
mov r14d, VariantTimeToDosDateTime
cmp word [r12], r14w
je 0x1800559ec
mov rcx, r12
call qword [sym.imp.OLEAUT32.dll_VariantCopy]
xor ebx, ebx
cmp eax, ebx
jge 0x1800559e5
mov ecx, eax
call fcn.18007d370
mov word [r12], r14w
jmp 0x1800559ee
xor ebx, ebx
mov word [r12 + 8], bx
xor edx, edx
mov rcx, r15
call fcn.180023a18
mov rdx, rax
lea rcx, [rsp + 0x58]
call fcn.180016ad0
nop
mov rsi, qword [rsp + 0x58]
cmp rsi, rbx
je 0x180055a2f
mov rcx, qword [rsi]
cmp rcx, rbx
je 0x180055a2b
call qword [sym.imp.OLEAUT32.dll_VariantInit]
mov rsi, qword [rsp + 0x58]
jmp 0x180055a31
mov eax, ebx
jmp 0x180055a31
mov eax, ebx
cmp eax, ebx
jbe 0x180055b27
cmp rsi, rbx
je 0x180055a56
cmp qword [rsi + 8], rbx
jne 0x180055a50
mov rcx, qword [rsi]
call fcn.18007d5b0
mov qword [rsi + 8], rax
mov rcx, qword [rsi + 8]
jmp 0x180055a59
mov rcx, rbx
lea rdx, [0x1800967e8]
call fcn.180068c30
mov rsi, rax
cmp rax, rbx
je 0x180055b1d
cmp dword [rdi + 0xb8], ebx
jbe 0x180055b1d
xor edx, edx
lea r8d, [rdx + 2]
mov rcx, rax
call fcn.1800676d0
mov rcx, rsi
call fcn.180068a90
movsxd rbx, eax
xor r8d, r8d
xor edx, edx
mov rcx, rsi
call fcn.1800676d0
mov dword [rdi + 0xb8], ebx
mov edx, ebx
mov rcx, qword [rdi + 0xa8]
call fcn.1800681d4
mov qword [rdi + 0xa8], rax
mov edx, dword [rdi + 0xb8]
lea rcx, [rax + rdx]
mov qword [rdi + 0xb0], rcx
mov dword [rdi + 0xbc], edx
mov r9, rsi
mov r8, r13
mov rcx, rax
call fcn.1800688ac
mov rcx, rsi
call fcn.180067850
cmp word [r12], r14w
je 0x180055b0d
mov rcx, r12
call qword [sym.imp.OLEAUT32.dll_VariantCopy]
xor ecx, ecx
cmp eax, ecx
jge 0x180055b08
mov ecx, eax
call fcn.18007d370
mov word [r12], r14w
or ebx, 0xffffffff
mov word [r12 + 8], bx
mov rsi, qword [rsp + 0x58]
jmp 0x180055b2a
or ebx, 0xffffffff
mov rsi, qword [rsp + 0x58]
jmp 0x180055b2a
or ebx, 0xffffffff
xor r12d, r12d
cmp rsi, r12
je 0x180055b67
mov eax, ebx
lock xadd dword [rsi + 0x10], eax
add eax, ebx
jne 0x180055b67
cmp rsi, r12
je 0x180055b67
mov rcx, qword [rsi]
cmp rcx, r12
je 0x180055b50
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
mov rcx, qword [rsi + 8]
cmp rcx, r12
je 0x180055b5e
call fcn.180064200
mov rcx, rsi
call fcn.18006419c
nop
jmp 0x180055b81
lea rcx, [rdi + 0xc0]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
nop
mov rcx, r15
call fcn.1800082b0
mov al, r13b
add rsp, 0xf0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
ret