Function at 0x1009d1b0
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x510
mov eax, dword [0x10284f40]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
mov edx, dword [esi + 4]
mov dword [esi + 0xc8], 0
test edx, edx
je 0x1009d1fc
mov bl, byte [edx]
test bl, bl
je 0x1009d1fc
mov ecx, 1
cmp bl, 0x2c
lea eax, [ecx + 1]
mov bl, byte [edx + 1]
lea edx, [edx + 1]
cmovne eax, ecx
mov ecx, eax
test bl, bl
jne 0x1009d1e5
jmp 0x1009d22c
mov eax, dword [esi]
test eax, eax
je 0x1009d227
mov dl, byte [eax]
test dl, dl
je 0x1009d227
mov edi, 1
nop dword [eax]
cmp dl, 0x2c
lea ecx, [edi + 1]
mov dl, byte [eax + 1]
lea eax, [eax + 1]
cmovne ecx, edi
mov edi, ecx
test dl, dl
jne 0x1009d210
jmp 0x1009d22c
mov ecx, 1
push 0x14
push ecx
mov dword [esi + 0xc4], ecx
call fcn.100efb1e
add esp, 8
mov dword [esi + 0xcc], eax
test eax, eax
je 0x1009daec
mov eax, dword [esi + 4]
test eax, eax
je 0x1009d2ba
cmp byte [eax], 0
je 0x1009d2ba
mov dword [ebp - 0x510], eax
xor ebx, ebx
mov al, 1
mov byte [ebp - 0x509], al
cmp dword [esi + 0xc4], ebx
jle 0x1009d2ba
xor edi, edi
test al, al
je 0x1009d2ba
lea eax, [ebp - 0x509]
push eax
lea eax, [ebp - 0x510]
push eax
call fcn.1009fa70
mov ecx, dword [esi + 0xcc]
add esp, 8
mov dword [edi + ecx + 8], eax
mov eax, dword [esi + 0xcc]
cmp dword [edi + eax + 8], 0
je 0x1009daec
inc ebx
add edi, 0x14
cmp ebx, dword [esi + 0xc4]
jge 0x1009d2ba
mov al, byte [ebp - 0x509]
jmp 0x1009d271
mov eax, dword [esi]
test eax, eax
je 0x1009d3a4
cmp byte [eax], 0
je 0x1009d3a4
mov dword [ebp - 0x510], eax
mov cl, 1
mov eax, dword [esi + 0xc4]
xor ebx, ebx
mov byte [ebp - 0x509], cl
test eax, eax
jle 0x1009d348
xor edi, edi
nop dword [eax]
test cl, cl
je 0x1009d344
lea eax, [ebp - 0x509]
push eax
lea eax, [ebp - 0x510]
push eax
call fcn.1009fa70
mov ecx, dword [esi + 0xcc]
add esp, 8
mov dword [edi + ecx + 4], eax
mov eax, dword [esi + 0xcc]
cmp dword [edi + eax + 4], 0
je 0x1009daec
mov eax, dword [esi + 0xc4]
inc ebx
add edi, 0x14
cmp ebx, eax
jge 0x1009d33b
mov cl, byte [ebp - 0x509]
jmp 0x1009d2f0
cmp byte [ebp - 0x509], 0
jne 0x1009d348
cmp ebx, eax
je 0x1009d3a4
mov edx, dword [esi]
mov ecx, 1
mov dword [esi + 0x98], 1
mov bl, byte [edx]
test bl, bl
je 0x1009d37b
nop
cmp bl, 0x2c
lea eax, [ecx + 1]
mov bl, byte [edx + 1]
lea edx, [edx + 1]
cmovne eax, ecx
mov ecx, eax
test bl, bl
jne 0x1009d360
mov eax, dword [esi + 0xc4]
push eax
push ecx
lea eax, [esi + 0x294]
push str.could_not_match__d_host_names_to__d_hostaddr_values_n
push eax
call fcn.100a14d0
add esp, 0x10
xor al, al
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100e40d6
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 0xc4]
xor ebx, ebx
test eax, eax
jle 0x1009d431
xor ecx, ecx
mov dword [ebp - 0x510], ecx
nop dword [eax]
mov edi, dword [esi + 0xcc]
add edi, ecx
mov eax, dword [edi + 8]
test eax, eax
je 0x1009d3dc
cmp byte [eax], 0
je 0x1009d3dc
mov dword [edi], 1
jmp 0x1009d41d
mov eax, dword [edi + 4]
test eax, eax
je 0x1009d3f9
cmp byte [eax], 0
je 0x1009d3f0
mov dword [edi], 0
jmp 0x1009d41d
push eax
call fcn.100f385c
add esp, 4
push str.localhost
call fcn.100fef59
add esp, 4
mov dword [edi + 4], eax
mov dword [edi], 0
test eax, eax
je 0x1009daec
mov ecx, dword [ebp - 0x510]
mov eax, dword [esi + 0xc4]
inc ebx
add ecx, 0x14
mov dword [ebp - 0x510], ecx
cmp ebx, eax
jl 0x1009d3c0
mov ecx, dword [esi + 8]
test ecx, ecx
je 0x1009d4f9
cmp byte [ecx], 0
je 0x1009d4f9
mov dword [ebp - 0x510], ecx
xor ebx, ebx
mov cl, 1
mov byte [ebp - 0x509], cl
test eax, eax
jle 0x1009d551
xor edi, edi
nop
test cl, cl
je 0x1009d4a9
lea eax, [ebp - 0x509]
push eax
lea eax, [ebp - 0x510]
push eax
call fcn.1009fa70
mov ecx, dword [esi + 0xcc]
add esp, 8
mov dword [edi + ecx + 0xc], eax
mov eax, dword [esi + 0xcc]
cmp dword [edi + eax + 0xc], 0
je 0x1009daec
mov eax, dword [esi + 0xc4]
inc ebx
mov cl, byte [ebp - 0x509]
add edi, 0x14
cmp ebx, eax
jl 0x1009d460
cmp ebx, 1
jne 0x1009d549
test cl, cl
jne 0x1009d551
cmp eax, ebx
jle 0x1009d4f9
mov eax, dword [esi + 0xcc]
lea edi, [ebx + 0x13]
push dword [eax + 0xc]
call fcn.100fef59
mov ecx, dword [esi + 0xcc]
add esp, 4
mov dword [edi + ecx + 0xc], eax
mov eax, dword [esi + 0xcc]
cmp dword [eax + edi + 0xc], 0
je 0x1009daec
inc ebx
add edi, 0x14
cmp ebx, dword [esi + 0xc4]
jl 0x1009d4c7
mov eax, dword [esi + 0x30]
test eax, eax
je 0x1009d512
cmp byte [eax], 0
jne 0x1009d5b4
push eax
call fcn.100f385c
add esp, 4
lea eax, [esi + 0x294]
push eax
call fcn.100a7670
add esp, 4
mov dword [esi + 0x30], eax
test eax, eax
jne 0x1009d5b4
pop edi
mov dword [esi + 0x98], 1
xor al, al
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100e40d6
mov esp, ebp
pop ebp
ret
test cl, cl
jne 0x1009d551
cmp ebx, eax
je 0x1009d4f9
mov edx, dword [esi + 8]
mov ecx, 1
mov dword [esi + 0x98], 1
mov bl, byte [edx]
test bl, bl
je 0x1009d58b
nop dword [eax]
cmp bl, 0x2c
lea eax, [ecx + 1]
mov bl, byte [edx + 1]
lea edx, [edx + 1]
cmovne eax, ecx
mov ecx, eax
test bl, bl
jne 0x1009d570
mov eax, dword [esi + 0xc4]
push eax
push ecx
lea eax, [esi + 0x294]
push str.could_not_match__d_port_numbers_to__d_hosts_n
push eax
call fcn.100a14d0
add esp, 0x10
xor al, al
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100e40d6
mov esp, ebp
pop ebp
ret
mov ecx, dword [esi + 0x28]
test ecx, ecx
je 0x1009d5d0
cmp byte [ecx], 0
jne 0x1009d5e4
test ecx, ecx
je 0x1009d5d0
push ecx
call fcn.100f385c
mov eax, dword [esi + 0x30]
add esp, 4
push eax
call fcn.100fef59
add esp, 4
mov dword [esi + 0x28], eax
test eax, eax
je 0x1009daec
mov eax, dword [esi + 0x34]
test eax, eax
je 0x1009d5f4
cmp byte [eax], 0
jne 0x1009d6f5
mov eax, dword [esi + 0x38]
test eax, eax
je 0x1009d604
cmp byte [eax], 0
jne 0x1009d69a
push 0x104
lea eax, [ebp - 0x108]
push 0
push eax
call fcn.100e6b10
add esp, 0xc
lea eax, [ebp - 0x108]
push eax
push 0
push 0
push 0x1a
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathA]
test eax, eax
jne 0x1009d69a
lea eax, [ebp - 0x108]
push eax
push str._s_postgresql
lea eax, [ebp - 0x508]
push 0x400
push eax
call fcn.101d4800
mov eax, dword [esi + 0x38]
add esp, 0x10
test eax, eax
je 0x1009d663
push eax
call fcn.100f385c
add esp, 4
push 0x400
call fcn.100f426e
add esp, 4
mov dword [esi + 0x38], eax
test eax, eax
je 0x1009daec
push str.pgpass.conf
lea ecx, [ebp - 0x508]
push ecx
push str._s__s
push 0x400
push eax
call fcn.101d4800
add esp, 0x14
mov eax, dword [esi + 0x38]
test eax, eax
je 0x1009d6f5
cmp byte [eax], 0
je 0x1009d6f5
xor ebx, ebx
cmp dword [esi + 0xc4], ebx
jle 0x1009d6f5
xor edi, edi
mov ecx, dword [esi + 0xcc]
mov eax, dword [ecx + edi + 4]
test eax, eax
je 0x1009d6c5
cmp byte [eax], 0
jne 0x1009d6c9
mov eax, dword [ecx + edi + 8]
push dword [esi + 0x38]
push dword [esi + 0x30]
push dword [esi + 0x28]
push dword [ecx + edi + 0xc]
push eax
call fcn.1009fc60
mov ecx, dword [esi + 0xcc]
inc ebx
add esp, 0x14
mov dword [edi + ecx + 0x10], eax
add edi, 0x14
cmp ebx, dword [esi + 0xc4]
jl 0x1009d6b2
mov edi, dword [esi + 0x4c]
test edi, edi
je 0x1009d86b
mov ecx, str.disable
mov eax, edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1009d727
test dl, dl
je 0x1009d723
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1009d727
add eax, 2
add ecx, 2
test dl, dl
jne 0x1009d707
xor eax, eax
jmp 0x1009d72c
sbb eax, eax
or eax, 1
test eax, eax
je 0x1009d883
mov ecx, str.allow
mov eax, edi
nop dword [eax + eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1009d760
test dl, dl
je 0x1009d75c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1009d760
add eax, 2
add ecx, 2
test dl, dl
jne 0x1009d740
xor eax, eax
jmp 0x1009d765
sbb eax, eax
or eax, 1
test eax, eax
je 0x1009d883
mov ecx, str.prefer
mov eax, edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1009d794
test dl, dl
je 0x1009d790
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1009d794
add eax, 2
add ecx, 2
test dl, dl
jne 0x1009d774
xor eax, eax
jmp 0x1009d799
sbb eax, eax
or eax, 1
test eax, eax
je 0x1009d883
mov ecx, str.require
mov eax, edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1009d7c8
test dl, dl
je 0x1009d7c4
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1009d7c8
add eax, 2
add ecx, 2
test dl, dl
jne 0x1009d7a8
xor eax, eax
jmp 0x1009d7cd
sbb eax, eax
or eax, 1
test eax, eax
je 0x1009d883
mov ecx, str.verify_ca
mov eax, edi
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1009d800
test dl, dl
je 0x1009d7fc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1009d800
add eax, 2
add ecx, 2
test dl, dl
jne 0x1009d7e0
xor eax, eax
jmp 0x1009d805
sbb eax, eax
or eax, 1
test eax, eax
je 0x1009d883
mov ecx, str.verify_full
mov eax, edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1009d830
test dl, dl
je 0x1009d82c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1009d830
add eax, 2
add ecx, 2
test dl, dl
jne 0x1009d810
xor eax, eax
jmp 0x1009d835
sbb eax, eax
or eax, 1
test eax, eax
je 0x1009d883
push edi
lea eax, [esi + 0x294]
mov dword [esi + 0x98], 1
push str.invalid_sslmode_value:___s__n
push eax
call fcn.100a14d0
add esp, 0xc
xor al, al
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100e40d6
mov esp, ebp
pop ebp
ret
push str.prefer
call fcn.100fef59
add esp, 4
mov dword [esi + 0x4c], eax
test eax, eax
je 0x1009daec
mov edi, dword [esi + 0x68]
test edi, edi
je 0x1009d9bd
mov ecx, str.disable
mov eax, edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1009d8b5
test dl, dl
je 0x1009d8b1
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1009d8b5
add eax, 2
add ecx, 2
test dl, dl
jne 0x1009d895
xor eax, eax
jmp 0x1009d8ba
sbb eax, eax
or eax, 1
test eax, eax
je 0x1009d95b
mov ecx, str.prefer
mov eax, edi
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1009d8f0
test dl, dl
je 0x1009d8ec
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1009d8f0
add eax, 2
add ecx, 2
test dl, dl
jne 0x1009d8d0
xor eax, eax
jmp 0x1009d8f5
sbb eax, eax
or eax, 1
test eax, eax
je 0x1009d95b
mov ecx, str.require
mov eax, edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1009d920
test dl, dl
je 0x1009d91c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1009d920
add eax, 2
add ecx, 2
test dl, dl
jne 0x1009d900
xor eax, eax
jmp 0x1009d925
sbb eax, eax
or eax, 1
test eax, eax
je 0x1009d95b
push edi
lea eax, [esi + 0x294]
mov dword [esi + 0x98], 1
push str.invalid_gssencmode_value:___s__n
push eax
call fcn.100a14d0
add esp, 0xc
xor al, al
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100e40d6
mov esp, ebp
pop ebp
ret
mov ecx, str.require
mov eax, edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1009d982
test dl, dl
je 0x1009d97e
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1009d982
add eax, 2
add ecx, 2
test dl, dl
jne 0x1009d962
xor eax, eax
jmp 0x1009d987
sbb eax, eax
or eax, 1
test eax, eax
jne 0x1009d9d5
push edi
lea eax, [esi + 0x294]
mov dword [esi + 0x98], 1
push str.gssencmode_value___s__invalid_when_GSSAPI_support_is_not_compiled_in_n
push eax
call fcn.100a14d0
add esp, 0xc
xor al, al
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100e40d6
mov esp, ebp
pop ebp
ret
push str.disable
call fcn.100fef59
add esp, 4
mov dword [esi + 0x68], eax
test eax, eax
je 0x1009daec
mov edi, dword [esi + 0x18]
test edi, edi
je 0x1009da35
mov ecx, str.auto
mov eax, edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1009da03
test dl, dl
je 0x1009d9ff
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1009da03
add eax, 2
add ecx, 2
test dl, dl
jne 0x1009d9e3
xor eax, eax
jmp 0x1009da08
sbb eax, eax
or eax, 1
test eax, eax
jne 0x1009da35
push edi
call fcn.100f385c
push 1
push 0
call fcn.101d63c0
push eax
call fcn.100a1270
push eax
call fcn.100fef59
add esp, 0x14
mov dword [esi + 0x18], eax
test eax, eax
je 0x1009daec
mov edi, dword [esi + 0x74]
test edi, edi
je 0x1009dad2
mov ecx, 0x101e47f4
mov eax, edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1009da67
test dl, dl
je 0x1009da63
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1009da67
add eax, 2
add ecx, 2
test dl, dl
jne 0x1009da47
xor eax, eax
jmp 0x1009da6c
sbb eax, eax
or eax, 1
test eax, eax
je 0x1009dad2
mov ecx, str.read_write
mov eax, edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1009da97
test dl, dl
je 0x1009da93
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1009da97
add eax, 2
add ecx, 2
test dl, dl
jne 0x1009da77
xor eax, eax
jmp 0x1009da9c
sbb eax, eax
or eax, 1
test eax, eax
je 0x1009dad2
push edi
lea eax, [esi + 0x294]
mov dword [esi + 0x98], 1
push str.invalid_target_session_attrs_value:___s__n
push eax
call fcn.100a14d0
add esp, 0xc
xor al, al
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100e40d6
mov esp, ebp
pop ebp
ret
pop edi
mov byte [esi + 0xb2], 1
mov al, 1
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100e40d6
mov esp, ebp
pop ebp
ret
lea eax, [esi + 0x294]
mov dword [esi + 0x98], 1
push str.out_of_memory_n
push eax
call fcn.100a14d0
mov ecx, dword [ebp - 4]
add esp, 8
xor ecx, ebp
xor al, al
pop edi
pop esi
pop ebx
call fcn.100e40d6
mov esp, ebp
pop ebp
ret