Function at 0x403840
Capabilities:
Create directory

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x443b81
mov eax, dword fs:[0]
push eax
sub esp, 0x588
mov eax, dword [0x45d55c]
xor eax, esp
mov dword [esp + 0x580], eax
push ebx
push esi
push edi
mov eax, dword [0x45d55c]
xor eax, esp
push eax
lea eax, [esp + 0x598]
mov dword fs:[0], eax
mov eax, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
mov dword [esp + 0x38], eax
mov eax, dword [ebp + 0x14]
push eax
lea ecx, [esp + 0x20]
mov dword [esp + 0x28], esi
mov dword [esp + 0x34], edi
call fcn.00401890
push str.Delphi_
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x20]
push edx
mov dword [esp + 0x5ac], 0
call fcn.00401770
add esp, 0xc
push eax
lea ecx, [esp + 0x20]
mov byte [esp + 0x5a4], 1
call fcn.004016b0
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
mov byte [esp + 0x5a0], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4038fe
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x1c]
push 0
push ecx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
test eax, eax
jne 0x403941
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
mov dword [esp + 0x5a0], 0xffffffff
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40393a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
jmp 0x40412c
push str.obj.pas
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x34]
push edx
call fcn.00401770
mov eax, dword [esp + 0x38]
push 0x44796c
push eax
mov byte [esp + 0x5b4], 2
call fcn.0042da56
mov ebx, eax
add esp, 0x14
test ebx, ebx
jne 0x4039c1
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
mov byte [esp + 0x5a0], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40399d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
mov dword [esp + 0x5a0], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jmp 0x40392e
push str.Unit_obj__r_n_r_n
push ebx
call fcn.0042d843
push str.Interface_r_n_r_n
push ebx
call fcn.0042d843
push str.Uses_r_n__Comobj_Variants__r_n_r_n
push ebx
call fcn.0042d843
push str.Type_r_n
push ebx
call fcn.0042d843
push edi
push str.___sClass_TObject__r_n
push ebx
call fcn.0042d843
push str.____Private_r_n
push ebx
call fcn.0042d843
push str.______obj_:_Variant__r_n
push ebx
call fcn.0042d843
push str.____Public_r_n
push ebx
call fcn.0042d843
add esp, 0x44
push str.______Constructor_Create____r_n
push ebx
call fcn.0042d843
push str.______Destructor_Destroy___Override__r_n_r_n
push ebx
call fcn.0042d843
add esp, 0x10
mov ecx, esi
mov dword [esp + 0x28], 0
call fcn.00401000
test eax, eax
jbe 0x403c75
mov dword [esp + 0x18], 0
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx + 4]
test eax, eax
je 0x403a7c
mov ecx, dword [ecx + 8]
sub ecx, eax
mov eax, 0x6572ec3
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [esp + 0x28], eax
jb 0x403a81
call fcn.0042d299
mov ecx, dword [esp + 0x24]
mov esi, dword [ecx + 4]
add esi, dword [esp + 0x18]
mov ecx, 0x143
lea edi, [esp + 0x3c]
rep movsd dword es:[edi], dword [esi]
xor eax, eax
lea esp, [esp]
mov cl, byte [esp + eax + 0x7c]
mov byte [esp + eax + 0x54c], cl
add eax, 1
test cl, cl
jne 0x403aa0
lea edx, [esp + 0x54c]
push edx
push str.______Function__s_
push ebx
call fcn.0042d843
xor edi, edi
add esp, 0xc
cmp dword [esp + 0xbc], edi
mov dword [esp + 0x20], edi
jle 0x403bed
lea esi, [esp + 0xc0]
mov dword [esp + 0x14], esi
jmp 0x403af0
mov eax, dword [esp + edi*4 + 0x4c0]
cmp eax, 3
jne 0x403b0d
push esi
push str._s:Integer
push ebx
call fcn.0042d843
jmp 0x403bb3
cmp eax, 0x14
jne 0x403b23
push esi
push str._s:Int64
push ebx
call fcn.0042d843
jmp 0x403bb3
cmp eax, 4
jne 0x403b36
push esi
push str._s:Single
push ebx
call fcn.0042d843
jmp 0x403bb3
cmp eax, 5
jne 0x403b49
push esi
push str._s:Double
push ebx
call fcn.0042d843
jmp 0x403bb3
cmp eax, 8
jne 0x403b5c
push esi
push str._s:WideString
push ebx
call fcn.0042d843
jmp 0x403bb3
cmp eax, 0x1a
jne 0x403bb6
mov edi, 0x447ef8
lea esi, [esp + 0x54c]
mov ecx, 0xf
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x403b9b
mov edi, 0x447ee8
lea esi, [esp + 0x54c]
mov ecx, 0xf
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x403b9b
mov eax, dword [esp + 0x14]
push eax
push str.out__s:OleVariant
jmp 0x403ba5
mov ecx, dword [esp + 0x14]
push ecx
push str.var__s:OleVariant
push ebx
call fcn.0042d843
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x2c]
add esp, 0xc
mov edx, dword [esp + 0xbc]
add edx, 0xffffffff
cmp edi, edx
jge 0x403bd2
push 0x449298
push ebx
call fcn.0042d843
add esp, 8
add edi, 1
add esi, 0x20
cmp edi, dword [esp + 0xbc]
mov dword [esp + 0x20], edi
mov dword [esp + 0x14], esi
jl 0x403af0
push 0x449294
push ebx
call fcn.0042d843
mov eax, dword [esp + 0x548]
add esp, 8
cmp eax, 3
jne 0x403c0e
push str.Integer_Virtual__r_n
jmp 0x403c48
cmp eax, 0x14
jne 0x403c1a
push str.Int64_Virtual__r_n
jmp 0x403c48
cmp eax, 8
jne 0x403c26
push str.WideString_Virtual__r_n
jmp 0x403c48
cmp eax, 2
jne 0x403c32
push str.Smallint_Virtual__r_n
jmp 0x403c48
cmp eax, 4
jne 0x403c3e
push str.Single_Virtual__r_n
jmp 0x403c48
cmp eax, 5
jne 0x403c51
push str.Double_Virtual__r_n
push ebx
call fcn.0042d843
add esp, 8
mov esi, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
add dword [esp + 0x18], 0x50c
add esi, 1
mov dword [esp + 0x28], esi
call fcn.00401000
cmp esi, eax
jb 0x403a55
push str.__End__r_n_r_n
push ebx
call fcn.0042d843
push str.Implementation_r_n_r_n
push ebx
call fcn.0042d843
mov esi, dword [esp + 0x40]
push esi
push str.Constructor__s.Create____r_n
push ebx
call fcn.0042d843
push str.Begin_r_n
push ebx
call fcn.0042d843
mov eax, dword [esp + 0x5c]
push eax
push str.__obj_:_CreateOleObject__s___r_n
push ebx
call fcn.0042d843
push str.End__r_n_r_n
push ebx
call fcn.0042d843
push esi
push str.Destructor__s.Destroy____r_n
push ebx
call fcn.0042d843
add esp, 0x44
push str.Begin_r_n
push ebx
call fcn.0042d843
push str.__obj_:_Unassigned__r_n
push ebx
call fcn.0042d843
push str.End__r_n_r_n
push ebx
call fcn.0042d843
mov ecx, dword [esp + 0x3c]
add esp, 0x18
mov dword [esp + 0x28], 0
call fcn.00401000
test eax, eax
jbe 0x403fe5
mov dword [esp + 0x20], 0
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx + 4]
test eax, eax
je 0x403d3c
mov ecx, dword [ecx + 8]
sub ecx, eax
mov eax, 0x6572ec3
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [esp + 0x28], eax
jb 0x403d41
call fcn.0042d299
mov ecx, dword [esp + 0x24]
mov esi, dword [ecx + 4]
add esi, dword [esp + 0x20]
mov ecx, 0x143
lea edi, [esp + 0x3c]
rep movsd dword es:[edi], dword [esi]
xor eax, eax
lea esp, [esp]
mov cl, byte [esp + eax + 0x7c]
mov byte [esp + eax + 0x54c], cl
add eax, 1
test cl, cl
jne 0x403d60
mov eax, dword [esp + 0x30]
lea edx, [esp + 0x54c]
push edx
push eax
push str.Function__s._s_
push ebx
call fcn.0042d843
xor edi, edi
add esp, 0x10
cmp dword [esp + 0xbc], edi
mov dword [esp + 0x18], edi
jle 0x403eb0
lea esi, [esp + 0xc0]
mov dword [esp + 0x14], esi
jmp 0x403db0
mov eax, dword [esp + edi*4 + 0x4c0]
cmp eax, 3
jne 0x403dcd
push esi
push str._s:Integer
push ebx
call fcn.0042d843
jmp 0x403e76
cmp eax, 0x14
jne 0x403de3
push esi
push str._s:Int64
push ebx
call fcn.0042d843
jmp 0x403e76
cmp eax, 4
jne 0x403df9
push esi
push str._s:Single
push ebx
call fcn.0042d843
jmp 0x403e76
cmp eax, 5
jne 0x403e0c
push esi
push str._s:Double
push ebx
call fcn.0042d843
jmp 0x403e76
cmp eax, 8
jne 0x403e1f
push esi
push str._s:WideString
push ebx
call fcn.0042d843
jmp 0x403e76
cmp eax, 0x1a
jne 0x403e79
mov edi, 0x447ef8
lea esi, [esp + 0x54c]
mov ecx, 0xf
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x403e5e
mov edi, 0x447ee8
lea esi, [esp + 0x54c]
mov ecx, 0xf
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x403e5e
mov ecx, dword [esp + 0x14]
push ecx
push str.out__s:OleVariant
jmp 0x403e68
mov edx, dword [esp + 0x14]
push edx
push str.var__s:OleVariant
push ebx
call fcn.0042d843
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
add esp, 0xc
mov eax, dword [esp + 0xbc]
add eax, 0xffffffff
cmp edi, eax
jge 0x403e95
push 0x449298
push ebx
call fcn.0042d843
add esp, 8
add edi, 1
add esi, 0x20
cmp edi, dword [esp + 0xbc]
mov dword [esp + 0x18], edi
mov dword [esp + 0x14], esi
jl 0x403db0
push 0x449294
push ebx
call fcn.0042d843
mov eax, dword [esp + 0x548]
add esp, 8
cmp eax, 3
jne 0x403ed1
push str.Integer__r_n
jmp 0x403f0b
cmp eax, 0x14
jne 0x403edd
push str.Int64__r_n
jmp 0x403f0b
cmp eax, 8
jne 0x403ee9
push str.WideString__r_n
jmp 0x403f0b
cmp eax, 2
jne 0x403ef5
push str.Smallint__r_n
jmp 0x403f0b
cmp eax, 4
jne 0x403f01
push str.Single__r_n
jmp 0x403f0b
cmp eax, 5
jne 0x403f14
push str.Double__r_n
push ebx
call fcn.0042d843
add esp, 8
push str.Begin_r_n
push ebx
call fcn.0042d843
lea ecx, [esp + 0x44]
push ecx
push str.__Result_:_obj._s
push ebx
call fcn.0042d843
add esp, 0x14
cmp dword [esp + 0xbc], 0
jle 0x403fa8
push 0x4490fc
push ebx
call fcn.0042d843
xor esi, esi
add esp, 8
cmp dword [esp + 0xbc], esi
jle 0x403f9a
lea edi, [esp + 0xc0]
lea esp, [esp]
push edi
push 0x447854
push ebx
call fcn.0042d843
mov edx, dword [esp + 0xc8]
add edx, 0xffffffff
add esp, 0xc
cmp esi, edx
jge 0x403f8b
push 0x447870
push ebx
call fcn.0042d843
add esp, 8
add esi, 1
add edi, 0x20
cmp esi, dword [esp + 0xbc]
jl 0x403f60
push 0x4485e0
push ebx
call fcn.0042d843
add esp, 8
push 0x4490f8
push ebx
call fcn.0042d843
push str.End__r_n_r_n
push ebx
call fcn.0042d843
mov esi, dword [esp + 0x38]
mov ecx, dword [esp + 0x34]
add dword [esp + 0x30], 0x50c
add esi, 1
add esp, 0x10
mov dword [esp + 0x28], esi
call fcn.00401000
cmp esi, eax
jb 0x403d15
push str.End._r_n
push ebx
call fcn.0042d843
push ebx
call fcn.0042d7c7
push 0x447828
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x48]
push ecx
call fcn.00401770
mov edx, dword [esp + 0x4c]
push 0x44796c
push edx
call fcn.0042da56
mov esi, eax
add esp, 0x20
test esi, esi
jne 0x40404b
mov eax, dword [esp + 0x34]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403975
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x403975
push 0x4490bc
push esi
call fcn.0042d843
push 0x449050
push esi
call fcn.0042d843
push 0x447a50
push esi
call fcn.0042d843
push 0x449000
push esi
call fcn.0042d843
push 0x448fe4
push esi
call fcn.0042d843
mov ecx, dword [esp + 0x58]
push ecx
push str.dm_:__s.Create_______
push esi
call fcn.0042d843
push str.ShowMessage_dm.Ver_____r_n
push esi
call fcn.0042d843
push str.dm.Free_____
push esi
call fcn.0042d843
add esp, 0x44
push esi
call fcn.0042d7c7
mov eax, dword [esp + 0x38]
add eax, 0xfffffff0
add esp, 4
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4040d4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
mov byte [esp + 0x5a0], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4040fc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
mov dword [esp + 0x5a0], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x404127
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 1
mov ecx, dword [esp + 0x598]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x580]
xor ecx, esp
call fcn.0042d746
mov esp, ebp
pop ebp
ret