Function at 0x4228b0
Capabilities:
Create directory
Delete file
Enumerate files on windows
Read file on windows
Resolve function by parsing pe exports
Write file on windows

Disassembly:
push 0xffffffffffffffff
push 0x4733eb
mov eax, dword fs:[0]
push eax
mov eax, 0x64c8
call fcn.0046e070
mov eax, dword [0x48e4f0]
xor eax, esp
mov dword [esp + 0x64c0], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x48e4f0]
xor eax, esp
push eax
lea eax, [esp + 0x64dc]
mov dword fs:[0], eax
mov ebp, dword [esp + 0x64ec]
mov eax, dword [ebp + 8]
push eax
mov eax, 0x15
mov dword [esp + 0x3c], ebp
call fcn.0042c450
or eax, edx
jne 0x42292b
mov eax, dword [ebp + 0xc]
cmp eax, 0xffffffff
je 0x4230f1
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [ebp + 0xc], 0xffffffff
jmp 0x4230f1
push 0x104
lea ecx, [esp + 0x1128]
push ecx
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea edx, [esp + 0x1124]
push 0x5c
push edx
call fcn.0045a946
add esp, 8
test eax, eax
je 0x42295c
xor ecx, ecx
mov word [eax + 2], cx
lea eax, [esp + 0x1124]
add eax, 0xfffffffe
mov cx, word [eax + 2]
add eax, 2
test cx, cx
jne 0x422966
mov edx, dword [0x4830b0]
mov ecx, dword [0x4830b4]
mov dword [eax], edx
mov edx, dword [0x4830b8]
mov dword [eax + 4], ecx
mov dword [eax + 8], edx
mov eax, dword [ebp + 8]
push eax
mov eax, 0x17
call fcn.0042c450
mov ebx, eax
mov esi, edx
mov ecx, ebx
or ecx, esi
mov dword [esp + 0x30], esi
jne 0x4229c9
xor eax, eax
lea ebx, [ebx]
movzx ecx, word [eax + str.FileZilla_Server.log]
mov word [esp + eax + 0x53c], cx
add eax, 2
test cx, cx
jne 0x4229b0
jmp 0x422a07
lea edx, [esp + 0x2ac]
push edx
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
movzx eax, word [esp + 0x2b2]
movzx ecx, word [esp + 0x2ae]
movzx edx, word [esp + 0x2ac]
push eax
push ecx
push edx
lea eax, [esp + 0x548]
push str.fzs__d__02d__02d.log
push eax
call fcn.0045a4b8
add esp, 0x14
cmp dword [ebp + 0xc], 0xffffffff
je 0x422a53
mov eax, dword [ebp + 4]
test eax, eax
je 0x422b88
lea ecx, [esp + 0x53c]
nop
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x422a46
test dx, dx
je 0x422a42
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x422a46
add eax, 4
add ecx, 4
test dx, dx
jne 0x422a20
xor eax, eax
jmp 0x422a4b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x422b88
xor eax, eax
jmp 0x422a60
movzx ecx, word [esp + eax + 0x1124]
mov word [esp + eax + 0x74c], cx
add eax, 2
test cx, cx
jne 0x422a60
push 0
lea ecx, [esp + 0x750]
push ecx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov eax, dword [ebp + 4]
test eax, eax
je 0x422a98
push eax
call fcn.00459522
add esp, 4
lea eax, [esp + 0x53c]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x422aa2
sub eax, edx
sar eax, 1
xor ecx, ecx
inc eax
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004576a9
lea ecx, [esp + 0x540]
mov edx, eax
mov dword [ebp + 4], eax
mov eax, ecx
add esp, 4
sub edx, eax
jmp 0x422ae0
movzx eax, word [ecx]
mov word [edx + ecx], ax
add ecx, 2
test ax, ax
jne 0x422ae0
lea eax, [esp + 0x53c]
mov edx, eax
jmp 0x422b00
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x422b00
lea edi, [esp + 0x74c]
sub eax, edx
add edi, 0xfffffffe
jmp 0x422b20
mov cx, word [edi + 2]
add edi, 2
test cx, cx
jne 0x422b20
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [ebp + 0xc]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
cmp eax, 0xffffffff
je 0x422b4b
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0
push 0
push 4
push 0
push 1
push 0xc0000000
lea ecx, [esp + 0x764]
push ecx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp + 0xc], eax
cmp eax, 0xffffffff
jne 0x422b77
xor eax, eax
jmp 0x4230f6
push 2
push 0
push 0
push eax
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
mov esi, dword [esp + 0x30]
mov edx, dword [ebp + 8]
push edx
mov eax, 0x16
call fcn.0042c450
or ebx, esi
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], edx
je 0x422f9b
lea eax, [esp + 0x2dc]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemTime]
lea ecx, [esp + 0x2c]
push ecx
lea edx, [esp + 0x2e0]
push edx
call dword [sym.imp.KERNEL32.dll_SystemTimeToFileTime]
mov ecx, dword [esp + 0x30]
xor eax, eax
xor esi, esi
add eax, dword [esp + 0x2c]
adc ecx, esi
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], ecx
xor eax, eax
nop
movzx ecx, word [esp + eax + 0x1124]
mov word [esp + eax + 0x1afc], cx
add eax, 2
cmp cx, si
jne 0x422be0
lea eax, [esp + 0x1afc]
add eax, 0xfffffffe
mov cx, word [eax + 2]
add eax, 2
cmp cx, si
jne 0x422c02
mov ecx, dword [str.fzs_.log]
mov edx, dword [0x483118]
mov dword [eax], ecx
mov ecx, dword [0x48311c]
mov dword [eax + 4], edx
mov edx, dword [0x483120]
mov dword [eax + 8], ecx
mov ecx, dword [0x483124]
mov dword [eax + 0xc], edx
lea edx, [esp + 0x2ec]
mov dword [eax + 0x10], ecx
push edx
lea eax, [esp + 0x1b00]
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov ecx, ebp
mov edx, dword [ecx + 8]
mov edi, eax
push edx
mov eax, 0x18
mov dword [esp + 0x1c], edi
call fcn.0042c450
mov ecx, eax
or ecx, edx
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], edx
je 0x422c92
push 0xc9
add eax, 1
push 0x2a69c000
adc edx, esi
push edx
push eax
call fcn.0046b6d0
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], edx
mov ebx, 7
xor edx, edx
mov dword [esp + 0x1c], esi
mov dword [esp + 0x20], esi
mov dword [esp + 0x2d4], ebx
mov dword [esp + 0x2d0], esi
mov word [esp + 0x2c0], dx
mov dword [esp + 0x64e4], esi
mov dword [esp + 0x3c], esi
mov dword [esp + 0x40], esi
cmp edi, 0xffffffff
je 0x422f02
nop
mov ecx, 0x94
lea esi, [esp + 0x2ec]
lea edi, [esp + 0x5c]
lea eax, [esp + 0x2ec]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x18]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x422d08
push esi
call dword [sym.imp.KERNEL32.dll_FindClose]
mov dword [esp + 0x18], 0xffffffff
mov ecx, 0x47fcb8
lea eax, [esp + 0x88]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x422d3a
test dx, dx
je 0x422d36
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x422d3a
add eax, 4
add ecx, 4
test dx, dx
jne 0x422d14
xor eax, eax
jmp 0x422d3f
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x422ee0
mov ecx, 0x480388
lea eax, [esp + 0x88]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x422d79
test dx, dx
je 0x422d75
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x422d79
add eax, 4
add ecx, 4
test dx, dx
jne 0x422d53
xor eax, eax
jmp 0x422d7e
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x422ee0
mov edi, dword [esp + 0x78]
mov eax, dword [esp + 0x38]
mov ecx, dword [eax + 4]
xor esi, esi
xor edx, edx
add esi, dword [esp + 0x7c]
lea eax, [esp + 0x88]
adc edi, edx
mov dword [esp + 0x4c], esi
mov dword [esp + 0x50], edi
lea ebx, [ebx]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x422dd6
test dx, dx
je 0x422dd2
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x422dd6
add eax, 4
add ecx, 4
test dx, dx
jne 0x422db0
xor eax, eax
jmp 0x422ddb
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x422dec
add dword [esp + 0x1c], esi
adc dword [esp + 0x20], edi
jmp 0x422ee0
mov edx, dword [esp + 0x74]
mov ebp, dword [esp + 0x58]
xor eax, eax
xor ebx, ebx
add ebx, dword [esp + 0x70]
adc edx, eax
mov eax, dword [esp + 0x54]
sub eax, ebx
mov dword [esp + 0x2ac], eax
sbb ebp, edx
xor eax, eax
nop
movzx ecx, word [esp + eax + 0x1124]
mov word [esp + eax + 0x74c], cx
add eax, 2
test cx, cx
jne 0x422e10
lea eax, [esp + 0x88]
mov esi, eax
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x422e31
lea edi, [esp + 0x74c]
sub eax, esi
add edi, 0xfffffffe
jmp 0x422e50
mov cx, word [edi + 2]
add edi, 2
test cx, cx
jne 0x422e50
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x24]
or ecx, dword [esp + 0x28]
je 0x422e99
cmp ebp, dword [esp + 0x28]
jl 0x422e99
jg 0x422e89
mov eax, dword [esp + 0x24]
cmp dword [esp + 0x2ac], eax
jbe 0x422e99
lea ecx, [esp + 0x74c]
push ecx
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
jmp 0x422ee0
mov eax, dword [esp + 0x4c]
add dword [esp + 0x1c], eax
mov ecx, dword [esp + 0x50]
mov eax, dword [esp + 0x40]
adc dword [esp + 0x20], ecx
cmp edx, eax
jl 0x422ec1
jg 0x422eb9
cmp ebx, dword [esp + 0x3c]
jb 0x422ec1
mov ecx, dword [esp + 0x3c]
or ecx, eax
jne 0x422ee0
mov dword [esp + 0x40], edx
lea edx, [esp + 0x74c]
mov dword [esp + 0x3c], ebx
push edx
lea ebx, [esp + 0x2c4]
call fcn.00406760
add esp, 4
cmp dword [esp + 0x18], 0xffffffff
jne 0x422cd0
mov ebx, dword [esp + 0x2d4]
cmp ebx, 8
jb 0x422f02
mov esi, dword [esp + 0x2c0]
mov eax, esi
jmp 0x422f10
mov esi, dword [esp + 0x2c0]
lea eax, [esp + 0x2c0]
mov ecx, 0x47ca70
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x422f3b
test dx, dx
je 0x422f37
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x422f3b
add eax, 4
add ecx, 4
test dx, dx
jne 0x422f15
xor eax, eax
jmp 0x422f40
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x422f8d
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x48]
mov edx, eax
or edx, ecx
je 0x422f8d
shld ecx, eax, 0xa
shl eax, 0xa
cmp dword [esp + 0x20], ecx
jl 0x422f8d
jg 0x422f67
cmp dword [esp + 0x1c], eax
jbe 0x422f8d
mov eax, esi
cmp ebx, 8
jae 0x422f75
lea eax, [esp + 0x2c0]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
lea ecx, [esp + 0x2c0]
call fcn.004044f0
jmp 0x4230f1
cmp ebx, 8
jb 0x422f9b
push esi
call fcn.004593e2
add esp, 4
mov esi, dword [esp + 0x44]
mov ebx, dword [esp + 0x48]
mov eax, esi
or eax, ebx
je 0x4230f1
mov edi, dword [esp + 0x38]
mov eax, dword [edi + 0xc]
call fcn.00429960
push 0
push 0x400
push edx
push eax
call fcn.0045c0e0
cmp edx, ebx
jl 0x4230f1
jg 0x422fd9
cmp eax, esi
jbe 0x4230f1
shld edx, eax, 0xa
shld ebx, esi, 0xa
shl eax, 0xa
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], edx
shl esi, 0xa
fild qword [esp + 0x2c]
mov dword [esp + 0x2c], esi
mov dword [esp + 0x30], ebx
fild qword [esp + 0x2c]
fmul qword [0x485a58]
fsubp st(1)
call fcn.0046f830
mov ebx, dword [sym.imp.KERNEL32.dll_SetFilePointer]
mov esi, eax
mov dword [esp + 0x18], 0
mov ebp, 1
mov ecx, dword [edi + 0xc]
push 0
push 0
push esi
push ecx
call ebx
mov ecx, dword [edi + 0xc]
push 0
lea edx, [esp + 0x28]
push edx
push 0x4000
lea eax, [esp + 0x24e0]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x4230d8
mov edx, dword [esp + 0x18]
mov eax, dword [edi + 0xc]
add esi, dword [esp + 0x24]
push 0
push 0
push edx
push eax
call ebx
mov eax, dword [esp + 0x24]
test ebp, ebp
je 0x4230a3
xor ecx, ecx
test eax, eax
je 0x423082
cmp byte [esp + ecx + 0x24d4], 0xa
je 0x423082
inc ecx
cmp ecx, eax
jb 0x423073
lea edx, [eax - 1]
cmp ecx, edx
jae 0x4230cd
xor ebp, ebp
push ebp
sub eax, ecx
lea edx, [esp + 0x20]
push edx
dec eax
push eax
lea eax, [esp + ecx + 0x24e1]
mov ecx, dword [edi + 0xc]
push eax
push ecx
jmp 0x4230b7
push 0
lea edx, [esp + 0x20]
push edx
mov edx, dword [edi + 0xc]
push eax
lea ecx, [esp + 0x24e0]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x4230d8
mov eax, dword [esp + 0x1c]
add dword [esp + 0x18], eax
mov eax, dword [esp + 0x24]
cmp eax, 0x4000
je 0x423021
mov ecx, dword [esp + 0x18]
mov edx, dword [edi + 0xc]
push 0
push 0
push ecx
push edx
call ebx
mov eax, dword [edi + 0xc]
push eax
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
mov eax, 1
mov ecx, dword [esp + 0x64dc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x64c0]
xor ecx, esp
call fcn.004593ed
add esp, 0x64d4
ret 4