Function at 0x438880
Capabilities:
Check if file exists
Create directory
Encode data using base64
Get file attributes

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5d83f8
mov eax, dword fs:[0]
push eax
sub esp, 0xbc
mov eax, dword [0x63a800]
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
mov esi, dword [ebp + 8]
mov ebx, ecx
mov dword [ebp - 0x58], ebx
mov dword [ebp - 4], 0
cmp dword [ebx + 0xbc], 2
je 0x4388f3
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp + 0xc]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4388ec
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
jmp 0x439cb3
mov al, byte [0x644405]
cmp al, 0x36
ja 0x439c8a
test al, al
je 0x439c8a
movzx ecx, al
cmp dword [ecx*4 + 0x644234], 0
jne 0x438934
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp + 0xc]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jmp 0x439ca4
mov edx, dword [ebx + 0x338]
mov eax, dword [esi + 0x28]
mov edx, dword [edx + 0x1b0]
lea edi, [ebx + 0x338]
push eax
mov ecx, edi
mov dword [0x642a1c], 0x500
mov dword [0x642a20], 0xe
call edx
mov dword [ebp - 0x60], eax
mov eax, dword [ebp + 0xc]
add eax, 0xfffffff0
push eax
call fcn.00432780
add eax, 0x10
mov dword [ebp - 0x88], eax
mov byte [ebp - 4], 2
mov eax, dword [ebp + 0xc]
add eax, 0xfffffff0
push eax
call fcn.00432780
add eax, 0x10
add esp, 8
mov dword [ebp - 0x4c], eax
cmp dword [ebp + 0x10], 0
mov byte [ebp - 4], 3
je 0x4389ac
add ebx, 0xc424
push ebx
lea ecx, [ebp - 0x4c]
call fcn.004327f0
cmp byte [0x644406], 4
jne 0x438a05
mov al, byte [esi + 0x32]
cmp al, 0xb
je 0x4389c0
cmp al, 0xa
jne 0x438a05
mov ecx, dword [esi + 0x2c]
test ecx, ecx
jne 0x4389e7
lea ecx, [ebp - 0x4c]
call fcn.00432bf0
lea ecx, [ebp - 0x88]
call fcn.00432bf0
lea ecx, [ebp + 0xc]
call fcn.00432bf0
jmp 0x439cb0
sub esp, 0x120
mov eax, esp
mov dword [ebp - 0x90], esp
push eax
call fcn.00419810
mov ecx, 0x642ae0
call fcn.004198f0
mov ecx, dword [esi + 0x28]
movzx edx, byte [0x644406]
movzx eax, byte [0x644407]
mov dword [0x642a34], ecx
lea ecx, [esi + 0x34]
push ecx
mov ecx, 0x644568
mov dword [0x642a1c], 0x500
mov dword [0x642a20], 0xf
mov dword [0x642a38], edx
mov dword [0x642a3c], eax
call fcn.004327f0
movzx edx, byte [esi + 0x32]
mov ecx, dword [esi + 0x28]
mov eax, dword [edi]
mov dword [0x642a2c], edx
mov edx, dword [eax + 0x18c]
push ecx
mov ecx, edi
call edx
mov ecx, dword [esi + 0x28]
mov ebx, eax
mov eax, dword [edi]
mov edx, dword [eax + 0x1a4]
push ecx
mov ecx, edi
mov dword [0x642a1c], 0x1500
mov dword [0x642a20], 0
call edx
test al, al
jne 0x438ac3
mov dword [0x642a1c], 0x1500
mov dword [0x642a20], 1
lea ecx, [ebp - 0x4c]
call fcn.00432bf0
lea ecx, [ebp - 0x88]
call fcn.00432bf0
lea ecx, [ebp + 0xc]
call fcn.00432bf0
xor eax, eax
jmp 0x439cb3
mov eax, 0x500
mov dword [0x642a1c], eax
mov dword [0x642a20], 0x10
test ebx, ebx
je 0x439988
mov esi, dword [esi + 0x2c]
mov edx, dword [ebx + 0x3c]
mov dword [0x642a1c], eax
mov eax, dword [ebx + 0x38]
add ebx, 0x3c
shr eax, 2
xor ecx, ecx
mov dword [0x642a20], 0x11
mov dword [ebp - 0x64], esi
mov dword [ebp - 0x70], ecx
mov dword [ebp - 0xa8], eax
mov dword [ebp - 0x78], edx
cmp eax, 0x20
ja 0x438b18
mov edx, ebx
mov dword [ebp - 0x78], ebx
test eax, eax
je 0x439988
test edx, edx
je 0x439988
test esi, esi
je 0x439988
jmp 0x438b49
mov ecx, dword [ebp - 0x70]
mov eax, dword [ebp - 0xa8]
cmp byte [0x64440b], 2
je 0x439988
mov dword [ebp - 0x50], esi
cmp ecx, eax
jae 0x439988
mov eax, ecx
and cl, 7
mov dl, 1
shl dl, cl
mov ecx, dword [ebp - 0x78]
shr eax, 3
mov al, byte [eax + ecx]
and al, dl
jne 0x438b88
mov ecx, dword [ebp - 0x64]
mov esi, dword [ecx + 0x2c]
inc dword [ebp - 0x70]
mov dword [ebp - 0x64], esi
jmp 0x439980
mov ebx, dword [ebp - 0x64]
add ebx, 0x34
push ebx
lea edx, [ebp + 0xc]
push edx
lea eax, [ebp - 0x40]
push eax
mov dword [0x642a1c], 0x500
mov dword [0x642a20], 0x13
mov dword [ebp - 0x5c], ebx
call fcn.00431010
add esp, 0xc
mov byte [ebp - 4], 0xa
mov edx, dword [ebp - 0x40]
mov ecx, dword [edx - 8]
mov eax, 1
sub eax, dword [edx - 4]
or ecx, eax
jge 0x438bd9
push 0
lea ecx, [ebp - 0x40]
call fcn.00432990
mov edx, dword [ebp - 0x40]
mov esi, dword [sym.imp.KERNEL32.dll_CreateFileA]
push 0
push 0
push 3
push 0
push 3
push 0xc0000000
push edx
call esi
cmp eax, 0xffffffff
jne 0x438f0e
mov eax, dword [ebp - 0x40]
mov edx, dword [eax - 8]
mov ecx, 1
sub ecx, dword [eax - 4]
or edx, ecx
jge 0x438c19
push 0
lea ecx, [ebp - 0x40]
call fcn.00432990
mov eax, dword [ebp - 0x40]
push 0
push 0
push 1
push 0
push 3
push 0xc0000000
push eax
call esi
mov edi, eax
cmp edi, 0xffffffff
jne 0x4393cd
mov ecx, dword [ebp - 0x40]
cmp dword [ecx - 0xc], 0x104
jl 0x4393cd
mov esi, dword [ebp - 0x58]
push ebx
add esi, 0xc424
lea edx, [ebp - 0x94]
push esi
push edx
call fcn.00431010
add esp, 0xc
push eax
lea ecx, [ebp - 0x40]
mov byte [ebp - 4], 0xb
call fcn.004327f0
lea ecx, [ebp - 0x94]
mov byte [ebp - 4], 0xa
call fcn.00432bf0
cmp dword [ebp + 0x10], 0
jne 0x438cd6
mov eax, dword [esi]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
or eax, ecx
jge 0x438c9c
push 0
mov ecx, esi
call fcn.00432990
mov eax, dword [esi]
add eax, 4
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x438cb1
test al, 0x10
jne 0x438cd6
mov eax, dword [esi]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
or eax, ecx
jge 0x438ccb
push 0
mov ecx, esi
call fcn.00432990
mov eax, dword [esi]
push 0
push eax
call sub.KERNEL32.dll_CreateDirectoryA
nop
mov edx, dword [ebp - 0x40]
mov ecx, dword [edx - 8]
mov eax, 1
sub eax, dword [edx - 4]
or ecx, eax
jge 0x438cf5
push 0
lea ecx, [ebp - 0x40]
call fcn.00432990
mov edx, dword [ebp - 0x40]
mov ebx, dword [sym.imp.KERNEL32.dll_CreateFileA]
push 0
push 0
push 3
push 0
push 3
push 0xc0000000
push edx
call ebx
cmp eax, 0xffffffff
jne 0x438d4a
mov edx, dword [ebp - 0x40]
mov ecx, dword [edx - 8]
mov eax, 1
sub eax, dword [edx - 4]
or ecx, eax
jge 0x438d31
push 0
lea ecx, [ebp - 0x40]
call fcn.00432990
mov edx, dword [ebp - 0x40]
push 0
push 0
push 1
push 0
push 3
push 0xc0000000
push edx
call ebx
mov edi, eax
jmp 0x4393cd
mov eax, dword [esi]
cmp dword [eax - 0xc], 0x104
jge 0x4393cd
lea ecx, [ebp - 0x74]
call fcn.00432c10
mov byte [ebp - 4], 0xc
mov eax, dword [esi]
mov ecx, dword [eax - 0xc]
push 0
push ecx
add eax, 0xfffffff0
mov ebx, 0x104
mov dword [ebp - 0x54], esp
mov dword [ebp - 0x44], esp
push eax
sub ebx, ecx
call fcn.00432780
mov ecx, dword [ebp - 0x44]
add eax, 0x10
add esp, 4
mov dword [ecx], eax
mov eax, dword [ebp - 0x5c]
lea edx, [ebp - 0x74]
push edx
push ecx
mov byte [ebp - 4], 0xd
mov eax, dword [eax]
mov dword [ebp - 0x44], esp
sub eax, 0x10
mov dword [ebp - 0x44], esp
push eax
call fcn.00432780
mov ecx, dword [ebp - 0x44]
add eax, 0x10
mov dword [ecx], eax
add esp, 4
mov ecx, ebx
mov byte [ebp - 4], 0xc
call fcn.0044efa0
add esp, 0x10
test eax, eax
je 0x438f06
lea edx, [ebp - 0x74]
push edx
lea eax, [ebp - 0xb0]
push esi
push eax
call fcn.00431010
add esp, 0xc
push eax
lea ecx, [ebp - 0x40]
mov byte [ebp - 4], 0xe
call fcn.004327f0
lea ecx, [ebp - 0xb0]
mov byte [ebp - 4], 0xc
call fcn.00432bf0
mov edx, dword [ebp - 0x40]
mov ecx, dword [edx - 8]
mov eax, 1
sub eax, dword [edx - 4]
or ecx, eax
jge 0x438e1b
push 0
lea ecx, [ebp - 0x40]
call fcn.00432990
mov edx, dword [ebp - 0x40]
push 0
push 0
push 1
push 0
push 3
push 0xc0000000
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov edi, eax
cmp edi, 0xffffffff
jne 0x438f06
mov eax, dword [esi]
mov ecx, dword [eax - 0xc]
push 1
push ecx
add eax, 0xfffffff0
mov ebx, 0x104
mov dword [ebp - 0x54], esp
mov dword [ebp - 0x44], esp
push eax
sub ebx, ecx
call fcn.00432780
mov ecx, dword [ebp - 0x44]
add eax, 0x10
add esp, 4
mov dword [ecx], eax
mov eax, dword [ebp - 0x5c]
lea edx, [ebp - 0x74]
push edx
push ecx
mov byte [ebp - 4], 0xf
mov eax, dword [eax]
mov dword [ebp - 0x44], esp
sub eax, 0x10
mov dword [ebp - 0x44], esp
push eax
call fcn.00432780
mov ecx, dword [ebp - 0x44]
add eax, 0x10
mov dword [ecx], eax
add esp, 4
mov ecx, ebx
mov byte [ebp - 4], 0xc
call fcn.0044efa0
add esp, 0x10
test eax, eax
je 0x438f06
lea edx, [ebp - 0x74]
push edx
lea eax, [ebp - 0xb8]
push esi
push eax
call fcn.00431010
add esp, 0xc
push eax
lea ecx, [ebp - 0x40]
mov byte [ebp - 4], 0x10
call fcn.004327f0
lea ecx, [ebp - 0xb8]
mov byte [ebp - 4], 0xc
call fcn.00432bf0
mov edx, dword [ebp - 0x40]
mov ecx, dword [edx - 8]
mov eax, 1
sub eax, dword [edx - 4]
or ecx, eax
jge 0x438eee
push 0
lea ecx, [ebp - 0x40]
call fcn.00432990
mov edx, dword [ebp - 0x40]
push 0
push 0
push 1
push 0
push 3
push 0xc0000000
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov edi, eax
lea ecx, [ebp - 0x74]
jmp 0x4393c4
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0x2e
mov ecx, ebx
call fcn.0043edf0
lea ecx, [ebp - 0x84]
mov esi, eax
call fcn.00432c10
lea ecx, [ebp - 0x68]
call fcn.00432c10
mov byte [ebp - 4], 0x12
cmp esi, 0xffffffff
je 0x438f9a
push esi
lea ecx, [ebp - 0xc0]
push ecx
mov ecx, ebx
call fcn.0043eea0
push eax
lea ecx, [ebp - 0x84]
mov byte [ebp - 4], 0x13
call fcn.004327f0
lea ecx, [ebp - 0xc0]
mov byte [ebp - 4], 0x12
call fcn.00432bf0
mov edx, dword [ebx]
mov eax, dword [edx - 0xc]
sub eax, esi
push eax
lea eax, [ebp - 0xc8]
push eax
mov ecx, ebx
call fcn.0043ee20
push eax
lea ecx, [ebp - 0x68]
mov byte [ebp - 4], 0x14
call fcn.004327f0
lea ecx, [ebp - 0xc8]
call fcn.00432bf0
jmp 0x438fa6
push ebx
lea ecx, [ebp - 0x84]
call fcn.004327f0
lea ecx, [ebp - 0x48]
call fcn.00432c10
mov byte [ebp - 4], 0x15
mov edi, 1
xor eax, eax
push edi
lea ecx, [ebp - 0x1c]
push 0x60c3d4
push ecx
mov byte [ebp - 0x1c], 0
mov dword [ebp - 0x1b], eax
mov dword [ebp - 0x17], eax
mov word [ebp - 0x13], ax
mov byte [ebp - 0x11], al
call fcn.005acd60
lea edx, [ebp - 0x84]
push edx
lea eax, [ebp + 0xc]
push eax
lea ecx, [ebp - 0xa4]
push ecx
call fcn.00431010
lea edx, [ebp - 0x1c]
push edx
push eax
lea eax, [ebp - 0xb4]
push eax
mov byte [ebp - 4], 0x16
call fcn.00431b20
lea ecx, [ebp - 0x68]
push ecx
push eax
lea edx, [ebp - 0x9c]
push edx
mov byte [ebp - 4], 0x17
call fcn.00431010
add esp, 0x30
push eax
lea ecx, [ebp - 0x48]
mov byte [ebp - 4], 0x18
call fcn.004327f0
lea ecx, [ebp - 0x9c]
call fcn.00432bf0
lea ecx, [ebp - 0xb4]
call fcn.00432bf0
lea ecx, [ebp - 0xa4]
mov byte [ebp - 4], 0x15
call fcn.00432bf0
mov esi, dword [ebp - 0x48]
mov ecx, dword [esi - 8]
mov eax, 1
sub eax, dword [esi - 4]
or ecx, eax
jge 0x43906e
push 0
lea ecx, [ebp - 0x48]
call fcn.00432990
mov esi, dword [ebp - 0x48]
push 0
push 0
push 3
push 0
push 3
push 0xc0000000
push esi
call dword [sym.imp.KERNEL32.dll_CreateFileA]
cmp eax, 0xffffffff
je 0x43909d
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
inc edi
cmp edi, 0x989680
jb 0x438fb7
mov ecx, dword [esi - 8]
mov eax, 1
sub eax, dword [esi - 4]
or ecx, eax
jge 0x4390b9
push 0
lea ecx, [ebp - 0x48]
call fcn.00432990
mov esi, dword [ebp - 0x48]
push 0
push 0
push 1
push 0
push 3
push 0xc0000000
push esi
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov edi, eax
cmp edi, 0xffffffff
jne 0x4393ae
cmp dword [esi - 0xc], 0x104
jl 0x4393ae
mov esi, dword [ebp - 0x58]
push ebx
add esi, 0xc424
lea eax, [ebp - 0xc4]
push esi
push eax
call fcn.00431010
add esp, 0xc
push eax
lea ecx, [ebp - 0x48]
mov byte [ebp - 4], 0x19
call fcn.004327f0
lea ecx, [ebp - 0xc4]
mov byte [ebp - 4], 0x15
call fcn.00432bf0
cmp dword [ebp + 0x10], 0
jne 0x439177
mov eax, dword [esi]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
or eax, ecx
jge 0x43913d
push 0
mov ecx, esi
call fcn.00432990
mov eax, dword [esi]
add eax, 4
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x439152
test al, 0x10
jne 0x439177
mov eax, dword [esi]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
or eax, ecx
jge 0x43916c
push 0
mov ecx, esi
call fcn.00432990
mov eax, dword [esi]
push 0
push eax
call sub.KERNEL32.dll_CreateDirectoryA
nop
mov ebx, dword [ebp - 0x48]
mov ecx, dword [ebx - 8]
mov eax, 1
sub eax, dword [ebx - 4]
or ecx, eax
jge 0x439196
push 0
lea ecx, [ebp - 0x48]
call fcn.00432990
mov ebx, dword [ebp - 0x48]
push 0
push 0
push 3
push 0
push 3
push 0xc0000000
push ebx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
cmp eax, 0xffffffff
jne 0x4391ea
mov ecx, dword [ebx - 8]
mov eax, 1
sub eax, dword [ebx - 4]
or ecx, eax
jge 0x4391cd
push 0
lea ecx, [ebp - 0x48]
call fcn.00432990
mov ebx, dword [ebp - 0x48]
push 0
push 0
push 1
push 0
push 3
push 0xc0000000
push ebx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov edi, eax
jmp 0x4393ae
mov ecx, dword [esi]
cmp dword [ecx - 0xc], 0x104
jge 0x4393ae
lea ecx, [ebp - 0x6c]
call fcn.00432c10
mov byte [ebp - 4], 0x1a
mov eax, dword [esi]
mov ecx, dword [eax - 0xc]
push 0
push ecx
add eax, 0xfffffff0
mov ebx, 0x104
mov dword [ebp - 0x54], esp
mov dword [ebp - 0x44], esp
push eax
sub ebx, ecx
call fcn.00432780
mov edx, dword [ebp - 0x44]
add eax, 0x10
add esp, 4
mov dword [edx], eax
lea eax, [ebp - 0x6c]
push eax
push ecx
mov ecx, dword [ebp - 0x5c]
mov byte [ebp - 4], 0x1b
mov eax, dword [ecx]
mov dword [ebp - 0x44], esp
sub eax, 0x10
mov dword [ebp - 0x44], esp
push eax
call fcn.00432780
mov edx, dword [ebp - 0x44]
add eax, 0x10
mov dword [edx], eax
add esp, 4
mov ecx, ebx
mov byte [ebp - 4], 0x1a
call fcn.0044efa0
add esp, 0x10
test eax, eax
je 0x4393a6
lea eax, [ebp - 0x6c]
push eax
lea ecx, [ebp - 0xac]
push esi
push ecx
call fcn.00431010
add esp, 0xc
push eax
lea ecx, [ebp - 0x48]
mov byte [ebp - 4], 0x1c
call fcn.004327f0
lea ecx, [ebp - 0xac]
mov byte [ebp - 4], 0x1a
call fcn.00432bf0
mov edx, dword [ebp - 0x48]
mov ecx, dword [edx - 8]
mov eax, 1
sub eax, dword [edx - 4]
or ecx, eax
jge 0x4392bb
push 0
lea ecx, [ebp - 0x48]
call fcn.00432990
mov edx, dword [ebp - 0x48]
push 0
push 0
push 1
push 0
push 3
push 0xc0000000
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov edi, eax
cmp edi, 0xffffffff
jne 0x4393a6
mov eax, dword [esi]
mov ecx, dword [eax - 0xc]
push 1
push ecx
add eax, 0xfffffff0
mov ebx, 0x104
mov dword [ebp - 0x54], esp
mov dword [ebp - 0x44], esp
push eax
sub ebx, ecx
call fcn.00432780
mov edx, dword [ebp - 0x44]
add eax, 0x10
add esp, 4
mov dword [edx], eax
lea eax, [ebp - 0x6c]
push eax
push ecx
mov ecx, dword [ebp - 0x5c]
mov byte [ebp - 4], 0x1d
mov eax, dword [ecx]
mov dword [ebp - 0x44], esp
sub eax, 0x10
mov dword [ebp - 0x44], esp
push eax
call fcn.00432780
mov edx, dword [ebp - 0x44]
add eax, 0x10
mov dword [edx], eax
add esp, 4
mov ecx, ebx
mov byte [ebp - 4], 0x1a
call fcn.0044efa0
add esp, 0x10
test eax, eax
je 0x4393a6
lea eax, [ebp - 0x6c]
push eax
lea ecx, [ebp - 0xbc]
push esi
push ecx
call fcn.00431010
add esp, 0xc
push eax
lea ecx, [ebp - 0x48]
mov byte [ebp - 4], 0x1e
call fcn.004327f0
lea ecx, [ebp - 0xbc]
mov byte [ebp - 4], 0x1a
call fcn.00432bf0
mov edx, dword [ebp - 0x48]
mov ecx, dword [edx - 8]
mov eax, 1
sub eax, dword [edx - 4]
or ecx, eax
jge 0x43938e
push 0
lea ecx, [ebp - 0x48]
call fcn.00432990
mov edx, dword [ebp - 0x48]
push 0
push 0
push 1
push 0
push 3
push 0xc0000000
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov edi, eax
lea ecx, [ebp - 0x6c]
call fcn.00432bf0
lea ecx, [ebp - 0x48]
call fcn.00432bf0
lea ecx, [ebp - 0x68]
call fcn.00432bf0
lea ecx, [ebp - 0x84]
mov byte [ebp - 4], 0xa
call fcn.00432bf0
mov edx, dword [ebp - 0x64]
mov esi, dword [edx + 0x2c]
inc dword [ebp - 0x70]
mov dword [ebp - 0x64], esi
cmp edi, 0xffffffff
jne 0x4393ef
lea ecx, [ebp - 0x40]
mov byte [ebp - 4], 3
call fcn.00432bf0
jmp 0x439980
mov ecx, dword [ebp - 0x50]
mov edx, dword [ecx + 0x20]
mov eax, dword [ebp - 0x58]
mov dword [eax + 0x5300], edx
mov ecx, dword [ecx + 0x24]
mov edx, dword [ebp - 0x5c]
xor esi, esi
mov dword [eax + 0x5304], ecx
lea ecx, [eax + 0x5308]
push edx
mov dword [ebp - 0x80], esi
mov dword [ebp - 0x7c], esi
call fcn.004327f0
mov eax, dword [ebp - 0x50]
mov dword [0x644418], esi
mov dword [0x64441c], esi
mov ecx, dword [eax + 0x20]
xor ebx, ebx
or ecx, dword [eax + 0x24]
je 0x439791
mov edx, eax
mov dl, byte [edx + 0x31]
mov al, byte [0x644405]
cmp al, dl
jne 0x4394c6
mov cl, byte [0x644406]
cmp cl, 2
jne 0x4394cc
movzx ecx, al
mov ecx, dword [ecx*4 + 0x644234]
mov cl, byte [ecx + 4]
cmp cl, 0xb
je 0x43946b
cmp cl, 0xc
jne 0x4394c6
mov eax, dword [ebp - 0x50]
sub esp, 0x38
mov esi, esp
mov dword [0x642a1c], 0x500
mov dword [0x642a20], 0x14
mov dword [ebp - 0x54], esp
call fcn.0040caa0
mov byte [ebp - 4], 0x20
mov eax, dword [ebp + 0xc]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x44], esp
mov esi, esp
push eax
call fcn.00432780
add eax, 0x10
mov dword [esi], eax
add esp, 4
mov edx, edi
mov ecx, 0x642ae0
mov byte [ebp - 4], 0xa
call fcn.00426ab0
mov esi, eax
mov ebx, edx
jmp 0x439791
mov cl, byte [0x644406]
cmp al, dl
jne 0x439791
cmp cl, 2
jne 0x439527
movzx ecx, al
mov ecx, dword [ecx*4 + 0x644234]
cmp byte [ecx + 4], 7
jne 0x439521
mov eax, dword [ebp - 0x50]
sub esp, 0x38
mov esi, esp
mov dword [0x642a1c], 0x500
mov dword [0x642a20], 0x16
mov dword [ebp - 0x54], esp
call fcn.0040caa0
push edi
mov ecx, 0x642ae0
call fcn.004274e0
mov esi, eax
mov ebx, edx
jmp 0x439791
mov cl, byte [0x644406]
cmp al, dl
jne 0x439791
cmp cl, 2
jne 0x4395a5
movzx ecx, al
mov ecx, dword [ecx*4 + 0x644234]
cmp byte [ecx + 4], 0xfd
jne 0x43959f
mov eax, dword [ebp - 0x50]
sub esp, 0x38
mov esi, esp
mov dword [0x642a1c], 0x500
mov dword [0x642a20], 0x18
mov dword [ebp - 0x54], esp
call fcn.0040caa0
mov byte [ebp - 4], 0x25
mov eax, dword [ebp + 0xc]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x44], esp
mov esi, esp
push eax
call fcn.00432780
add eax, 0x10
mov dword [esi], eax
add esp, 4
mov edx, edi
mov ecx, 0x642ae0
mov byte [ebp - 4], 0xa
call fcn.00426530
mov esi, eax
mov ebx, edx
jmp 0x439791
mov cl, byte [0x644406]
cmp al, dl
jne 0x439791
cmp cl, 1
jne 0x439623
mov cl, byte [0x644408]
cmp cl, 0xb
je 0x4395c2
cmp cl, 0xc
jne 0x43961d
mov eax, dword [ebp - 0x50]
sub esp, 0x38
mov esi, esp
mov dword [0x642a1c], 0x500
mov dword [0x642a20], 0x1a
mov dword [ebp - 0x54], esp
call fcn.0040caa0
mov byte [ebp - 4], 0x28
mov eax, dword [ebp + 0xc]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x44], esp
mov esi, esp
push eax
call fcn.00432780
add eax, 0x10
mov dword [esi], eax
add esp, 4
mov ebx, edi
mov ecx, 0x642ae0
mov byte [ebp - 4], 0xa
call fcn.00427910
mov esi, eax
mov ebx, edx
jmp 0x439791
mov cl, byte [0x644406]
cmp al, dl
jne 0x439791
cmp cl, 1
jne 0x439673
cmp byte [0x644408], 7
jne 0x43966d
mov eax, dword [ebp - 0x50]
sub esp, 0x38
mov esi, esp
mov dword [0x642a1c], 0x500
mov dword [0x642a20], 0x1c
mov dword [ebp - 0x54], esp
call fcn.0040caa0
push edi
mov ecx, 0x642ae0
call fcn.00427a70
jmp 0x439787
mov cl, byte [0x644406]
cmp al, dl
jne 0x439791
cmp cl, 1
jne 0x4396ea
cmp byte [0x644408], 0xfd
jne 0x4396e4
mov eax, dword [ebp - 0x50]
sub esp, 0x38
mov esi, esp
mov dword [0x642a1c], 0x500
mov dword [0x642a20], 0x1e
mov dword [ebp - 0x54], esp
call fcn.0040caa0
mov byte [ebp - 4], 0x2d
mov eax, dword [ebp + 0xc]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x44], esp
mov esi, esp
push eax
call fcn.00432780
add eax, 0x10
mov dword [esi], eax
add esp, 4
mov ebx, edi
mov ecx, 0x642ae0
mov byte [ebp - 4], 0xa
call fcn.00427770
mov esi, eax
mov ebx, edx
jmp 0x439791
mov cl, byte [0x644406]
cmp al, dl
jne 0x439791
cmp cl, 3
jne 0x43972c
mov eax, dword [ebp - 0x50]
sub esp, 0x38
mov esi, esp
mov dword [0x642a1c], 0x500
mov dword [0x642a20], 0x20
mov dword [ebp - 0x54], esp
call fcn.0040caa0
push edi
push 0x642ae0
call fcn.0040d200
mov esi, eax
mov ebx, edx
jmp 0x439791
cmp al, dl
jne 0x439791
cmp cl, 4
jne 0x439791
mov eax, dword [ebp - 0x50]
sub esp, 0x38
mov esi, esp
mov dword [0x642a1c], 0x500
mov dword [0x642a20], 0x22
mov dword [ebp - 0x54], esp
call fcn.0040caa0
mov byte [ebp - 4], 0x32
mov eax, dword [ebp + 0xc]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x44], esp
mov esi, esp
push eax
call fcn.00432780
add eax, 0x10
mov dword [esi], eax
add esp, 4
mov ebx, edi
mov ecx, 0x642ae0
mov byte [ebp - 4], 0xa
call fcn.004224c0
mov ebx, edx
mov esi, eax
mov dword [ebp - 0x7c], ebx
mov dword [ebp - 0x80], esi
push edi
mov dword [0x642a1c], 0x500
mov dword [0x642a20], 0x25
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov edi, dword [ebp - 0x58]
inc dword [edi + 0x52f0]
xor eax, eax
push 0x60b980
lea ecx, [edi + 0x5308]
mov dword [edi + 0x5300], eax
mov dword [edi + 0x5304], eax
call fcn.00432b40
mov eax, dword [ebp - 0x50]
mov edx, dword [eax + 0x20]
add dword [edi + 0x52e8], edx
mov eax, dword [eax + 0x24]
mov ecx, dword [ebp - 0x80]
adc dword [edi + 0x52ec], eax
or ecx, dword [ebp - 0x7c]
je 0x439885
mov edx, dword [ebp - 0x7c]
xor eax, eax
push edx
mov dword [ebp - 0x3b], eax
mov dword [ebp - 0x37], eax
mov dword [ebp - 0x33], eax
mov dword [ebp - 0x2f], eax
mov dword [ebp - 0x2b], eax
mov dword [ebp - 0x27], eax
mov dword [ebp - 0x23], eax
mov byte [ebp - 0x1f], al
mov eax, dword [ebp - 0x80]
push eax
lea ecx, [ebp - 0x3c]
push 0x60c3e4
push ecx
mov byte [ebp - 0x3c], 0
call fcn.005acd60
add esp, 0x10
push 0x642ac4
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [ebp - 0x5c]
lea edx, [ebp - 0x3c]
push edx
push eax
lea ecx, [ebp - 0xa0]
push ecx
call fcn.00431b20
push 0x60c3f4
push eax
lea edx, [ebp - 0x98]
push edx
mov byte [ebp - 4], 0x35
call fcn.00431b20
add esp, 0x18
push eax
mov ecx, 0x644428
mov byte [ebp - 4], 0x36
call fcn.004327f0
lea ecx, [ebp - 0x98]
call fcn.00432bf0
lea ecx, [ebp - 0xa0]
jmp 0x4398bd
push 0x642ac4
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [ebp - 0x5c]
push 0x60c3f8
push eax
lea ecx, [ebp - 0x90]
push ecx
call fcn.00431b20
add esp, 0xc
push eax
mov ecx, 0x644428
mov byte [ebp - 4], 0x37
call fcn.004327f0
lea ecx, [ebp - 0x90]
mov byte [ebp - 4], 0xa
call fcn.00432bf0
push 0x642ac4
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
or esi, ebx
jne 0x4398e8
cmp dword [0x644468], esi
jne 0x4398e8
mov esi, dword [ebp - 0x58]
inc dword [esi + 0xc0]
jmp 0x4398eb
mov esi, dword [ebp - 0x58]
mov ebx, 0x500
push 0x642ac4
mov dword [0x642a1c], ebx
mov dword [0x642a20], 0x26
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov edx, dword [0x644428]
mov ecx, dword [edx - 8]
mov eax, 1
sub eax, dword [edx - 4]
or ecx, eax
jge 0x439932
push 0
mov ecx, 0x644428
call fcn.00432990
mov edx, dword [0x644428]
lea ecx, [esi + 0x51f8]
mov edi, edx
call fcn.00431cc0
push 0
push 0
push 0
push 0
push edi
push eax
push 1
lea ecx, [esi + 0x51f8]
call fcn.004b26a6
push 0x642ac4
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
lea ecx, [ebp - 0x40]
mov dword [0x642a1c], ebx
mov dword [0x642a20], 0x27
mov byte [ebp - 4], 3
call fcn.00432bf0
mov esi, dword [ebp - 0x64]
test esi, esi
jne 0x438b40
cmp dword [ebp - 0x60], 0
mov edx, dword [ebp + 0x10]
mov dword [ebp - 0x78], edx
je 0x438aa1
cmp byte [0x64440b], 2
je 0x438aa1
mov esi, dword [ebp - 0x58]
mov eax, dword [esi + 0x338]
mov edi, dword [ebp - 0x60]
mov edx, dword [eax + 0x18c]
push edi
lea ecx, [esi + 0x338]
mov dword [0x642a1c], 0x500
mov dword [0x642a20], 0x28
call edx
mov ebx, eax
test ebx, ebx
jne 0x4399f3
mov dword [0x642a1c], 0x500
mov dword [0x642a20], 0x46
jmp 0x439c1c
mov eax, dword [esi + 0x338]
mov edx, dword [eax + 0x1a4]
push edi
lea ecx, [esi + 0x338]
call edx
test al, al
je 0x439c1c
push 0x7e
push 0x3a
lea esi, [ebx + 0x34]
push esi
mov dword [0x642a1c], 0x500
mov dword [0x642a20], 0x29
call fcn.0043ed30
push 0x7e
push 0x3f
push esi
call fcn.0043ed30
push 0x5c
push 0x2f
push esi
call fcn.0043ed30
push 0x7e
push 0x2a
push esi
call fcn.0043ed30
push 0x7e
push 0x22
push esi
call fcn.0043ed30
push 0x7e
push 0x22
push esi
call fcn.0043ed30
push 0x7e
push 0x7c
push esi
call fcn.0043ed30
push 0x28
push 0x3c
push esi
call fcn.0043ed30
push 0x29
push 0x3e
push esi
call fcn.0043ed30
push 0x7e
push 0x5c
push esi
call fcn.0043ed30
lea eax, [ebp + 0xc]
push eax
lea ecx, [ebp - 0x4c]
call fcn.004327f0
mov eax, dword [esi]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [ebp - 0x4c]
call fcn.00432140
mov esi, dword [esi]
sub esi, 0x10
push esi
call fcn.00432780
add eax, 0x10
add esp, 4
mov dword [ebp - 0x68], eax
mov byte [ebp - 4], 0x3d
mov edx, dword [ebp - 0x4c]
mov ecx, dword [edx - 8]
mov eax, 1
sub eax, dword [edx - 4]
xor edi, edi
or ecx, eax
jge 0x439ade
push edi
lea ecx, [ebp - 0x4c]
call fcn.00432990
mov edx, dword [ebp - 0x4c]
add edx, 4
push edx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x439b05
test al, 0x10
jne 0x439b05
push 0x60c3c8
lea ecx, [ebp - 0x4c]
call fcn.00432240
mov edi, 1
jmp 0x439b12
push 0x60c3b4
lea ecx, [ebp - 0x4c]
call fcn.00432240
mov esi, dword [ebp - 0x4c]
mov ecx, dword [esi - 8]
mov eax, 1
sub eax, dword [esi - 4]
or ecx, eax
jge 0x439b31
push 0
lea ecx, [ebp - 0x4c]
call fcn.00432990
mov esi, dword [ebp - 0x4c]
lea ecx, [esi + 4]
push ecx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x439b44
test al, 0x10
jne 0x439bc1
mov ecx, dword [esi - 8]
mov eax, 1
sub eax, dword [esi - 4]
or ecx, eax
jge 0x439b60
push 0
lea ecx, [ebp - 0x4c]
call fcn.00432990
mov esi, dword [ebp - 0x4c]
push 0
push esi
call sub.KERNEL32.dll_CreateDirectoryA
nop
test eax, eax
jne 0x439bc1
test edi, edi
jne 0x439bc1
cmp dword [esi - 0xc], 0x100
jl 0x439c5c
mov edi, dword [ebp - 0x58]
push eax
lea ecx, [edi + 0xc424]
call fcn.004329f0
add eax, 4
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x439ba0
test al, 0x10
jne 0x439bc1
push 0
push 0
lea ecx, [edi + 0xc424]
call fcn.004329f0
push eax
call sub.KERNEL32.dll_CreateDirectoryA
nop
test eax, eax
je 0x439bc1
mov dword [ebp - 0x78], 1
mov eax, dword [ebp - 0x78]
push eax
push ecx
lea eax, [esi - 0x10]
mov dword [ebp - 0x54], esp
mov edi, esp
push eax
mov dword [0x642a1c], 0x500
mov dword [0x642a20], 0x2a
call fcn.00432780
mov ecx, dword [ebp - 0x58]
add esp, 4
add eax, 0x10
push ebx
mov dword [edi], eax
call fcn.00438880
lea ecx, [ebp - 0x68]
mov dword [0x642a1c], 0x500
mov dword [0x642a20], 0x47
mov byte [ebp - 4], 3
call fcn.00432bf0
mov edi, dword [ebp - 0x60]
mov ecx, dword [ebp - 0x58]
mov edx, dword [ecx + 0x338]
mov eax, dword [edx + 0x1ac]
add ecx, 0x338
push 1
push edi
call eax
mov dword [ebp - 0x60], eax
mov dword [0x642a1c], 0x500
mov dword [0x642a20], 0x48
cmp dword [ebp - 0x60], 0
jne 0x439998
jmp 0x438aa1
mov ecx, dword [ebp - 0x58]
mov edx, dword [ecx + 0x338]
mov eax, dword [ebp - 0x60]
mov edx, dword [edx + 0x1ac]
add ecx, 0x338
push 1
push eax
call edx
lea ecx, [ebp - 0x68]
mov dword [ebp - 0x60], eax
mov byte [ebp - 4], 3
call fcn.00432bf0
jmp 0x439c4d
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp + 0xc]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x439cb0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
or eax, 0xffffffff
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.005ac396
mov esp, ebp
pop ebp
ret 0xc