Function at 0x40c4a0
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x444370
mov eax, dword fs:[0]
push eax
sub esp, 0x30
mov eax, dword [0x45d55c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
xor esi, esi
mov dword [ebp - 4], esi
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x20], esi
call dword [0x45e948]
mov edi, dword [ebp + 8]
cmp edi, esi
mov ebx, eax
mov dword [ebp - 0x3c], ebx
jne 0x40c4ef
xor eax, eax
jmp 0x40c536
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov edi, eax
add edi, 1
cmp edi, 0x3fffffff
jg 0x40c52f
lea eax, [edi + edi]
call fcn.0042efa0
mov esi, esp
test esi, esi
je 0x40c52f
mov eax, dword [ebp + 8]
push edi
push esi
push 0xffffffffffffffff
push eax
push 0
push ebx
mov word [esi], 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
neg eax
sbb eax, eax
and eax, esi
jmp 0x40c531
xor eax, eax
mov edi, dword [ebp + 8]
xor esi, esi
lea ecx, [ebp - 0x18]
push ecx
push eax
call dword [sym.imp.OLEAUT32.dll_LoadRegTypeLib]
cmp eax, esi
jl 0x40c75b
mov eax, dword [ebp - 0x18]
mov edx, dword [eax]
mov edx, dword [edx + 0x24]
push esi
push esi
push esi
lea ecx, [ebp - 0x2c]
push ecx
push 0xffffffffffffffff
push eax
call edx
mov eax, dword [ebp - 0x2c]
cmp eax, esi
mov edi, eax
jne 0x40c56c
xor eax, eax
xor ecx, ecx
jmp 0x40c5b0
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
add eax, 1
cmp eax, 0x3fffffff
jle 0x40c583
xor eax, eax
xor ecx, ecx
jmp 0x40c5b0
lea esi, [eax + eax]
mov eax, esi
call fcn.0042efa0
mov eax, esp
push ebx
push esi
push edi
push eax
call fcn.0040ab40
test eax, eax
jne 0x40c5a0
xor ecx, ecx
jmp 0x40c5b0
mov ecx, eax
lea esi, [ecx + 1]
mov dl, byte [ecx]
add ecx, 1
test dl, dl
jne 0x40c5a5
sub ecx, esi
mov edi, dword [ebp + 0x10]
push ecx
push eax
mov ecx, edi
call fcn.00401530
mov eax, dword [ebp - 0x2c]
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [ebp - 0x18]
mov ecx, dword [eax]
mov edx, dword [ecx + 0xc]
push eax
call edx
mov ebx, eax
xor esi, esi
test ebx, ebx
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x14], esi
jbe 0x40c744
mov eax, dword [ebp - 0x18]
mov ecx, dword [eax]
lea edx, [ebp - 0x20]
push edx
push esi
push eax
mov eax, dword [ecx + 0x10]
call eax
test eax, eax
jl 0x40c736
mov eax, dword [ebp - 0x18]
mov ecx, dword [eax]
lea edx, [ebp - 0x38]
push edx
push esi
push eax
mov eax, dword [ecx + 0x14]
call eax
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax]
push 0
push 0
push 0
lea edx, [ebp - 0x28]
push edx
push 0xffffffffffffffff
push eax
mov eax, dword [ecx + 0x30]
call eax
cmp dword [ebp - 0x38], 5
jne 0x40c71a
mov eax, dword [ebp - 0x28]
test eax, eax
mov ebx, eax
jne 0x40c639
xor ecx, ecx
jmp 0x40c686
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
add eax, 1
cmp eax, 0x3fffffff
jle 0x40c650
xor eax, eax
xor ecx, ecx
jmp 0x40c686
lea esi, [eax + eax]
mov eax, esi
call fcn.0042efa0
mov ecx, dword [ebp - 0x3c]
mov eax, esp
push ecx
push esi
push ebx
push eax
call fcn.0040ab40
test eax, eax
jne 0x40c673
mov esi, dword [ebp - 0x14]
xor ecx, ecx
jmp 0x40c686
mov ecx, eax
lea esi, [ecx + 1]
mov dl, byte [ecx]
add ecx, 1
test dl, dl
jne 0x40c678
sub ecx, esi
mov esi, dword [ebp - 0x14]
mov ebx, dword [ebp + 0xc]
push ecx
push eax
mov ecx, ebx
call fcn.00401530
push 0x44cd68
lea edx, [ebp - 0x30]
push edi
push edx
call fcn.00401770
add esp, 0xc
push eax
mov ecx, edi
mov byte [ebp - 4], 1
call fcn.004016b0
mov eax, dword [ebp - 0x30]
add eax, 0xfffffff0
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c6d3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push ebx
lea ecx, [ebp - 0x34]
push edi
push ecx
call fcn.0040bbc0
add esp, 0xc
push eax
mov ecx, edi
mov byte [ebp - 4], 2
call fcn.004016b0
mov eax, dword [ebp - 0x34]
add eax, 0xfffffff0
mov byte [ebp - 4], 0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40c710
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ebx, dword [ebp - 0x1c]
mov dword [ebp - 0x24], 1
mov ecx, dword [ebp - 0x28]
push ecx
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [ebp - 0x20]
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
mov dword [ebp - 0x20], 0
add esi, 1
cmp esi, ebx
mov dword [ebp - 0x14], esi
jb 0x40c5e3
mov eax, dword [ebp - 0x18]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov dword [ebp - 0x18], 0
jmp 0x40c981
add edi, 0xfffffff0
push edi
call fcn.00401350
lea esi, [eax + 0x10]
mov dword [ebp - 0x14], esi
push 0x5c
mov bl, 3
push esi
mov byte [ebp - 4], bl
call fcn.0042e508
add esp, 0xc
test eax, eax
je 0x40c782
sub eax, esi
jns 0x40c7c9
add esi, 0xfffffff0
mov byte [ebp - 4], 0
lea eax, [esi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40c7a2
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
mov dword [ebp - 4], 0xffffffff
lea ecx, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c7c2
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
xor eax, eax
jmp 0x40c9aa
push eax
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0x14]
call fcn.0040b8e0
push eax
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 4
call fcn.004016b0
mov eax, dword [ebp - 0x1c]
add eax, 0xfffffff0
mov byte [ebp - 4], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c805
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 0x44cde8
lea ecx, [ebp - 0x14]
push ecx
lea edx, [ebp - 0x1c]
push edx
call fcn.00401770
add esp, 0xc
push eax
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 5
call fcn.004016b0
mov eax, dword [ebp - 0x1c]
add eax, 0xfffffff0
mov byte [ebp - 4], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c849
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ebx, dword [ebp - 0x14]
push 0x44cde4
push ebx
call fcn.0042da56
mov esi, eax
add esp, 8
test esi, esi
jne 0x40c8bd
push eax
push 0x44cd6f
push 0x44cdbc
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
lea eax, [ebx - 0x10]
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c892
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
lea ecx, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c7c2
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
xor eax, eax
jmp 0x40c9aa
push 2
push 0
push esi
call fcn.0042ef0f
push esi
call fcn.0042ee1a
push 0
push 0
push esi
mov ebx, eax
call fcn.0042ef0f
lea eax, [ebx + 1]
push eax
call fcn.0042ebbf
add esp, 0x20
mov edi, eax
test edi, edi
push esi
jne 0x40c90b
call fcn.0042d7c7
add esp, 4
lea ecx, [ebp - 0x14]
call fcn.004013f0
lea ecx, [ebp + 8]
call fcn.004013f0
xor eax, eax
jmp 0x40c9aa
push ebx
push 1
push edi
call fcn.0042eb55
push esi
call fcn.0042d7c7
push 0x44cda8
push edi
mov byte [edi + ebx], 0
call fcn.0042e010
add esp, 0x1c
test eax, eax
jne 0x40c938
push edi
call fcn.0042e82b
jmp 0x40c8f1
mov ecx, dword [ebp + 0x14]
push 0x44cd90
push edi
mov dword [ecx], 1
call fcn.0042e010
add esp, 8
test eax, eax
je 0x40c95c
mov edx, dword [ebp + 0x18]
mov dword [edx], 1
mov ecx, dword [ebp + 0xc]
push 0x44cd88
call fcn.00401850
push edi
call fcn.0042e82b
add esp, 4
lea ecx, [ebp - 0x14]
mov dword [ebp - 0x24], 1
call fcn.004013f0
mov eax, dword [ebp + 8]
add eax, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c9a7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x24]
lea esp, [ebp - 0x4c]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0042d746
mov esp, ebp
pop ebp
ret