Function at 0x437490
Capabilities:
Check if file exists
Create directory
Get disk size
Get file attributes

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5d8586
mov eax, dword fs:[0]
push eax
sub esp, 0x100
mov eax, dword [0x63a800]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
mov dword [ebp - 0x4c], ebx
xor esi, esi
mov dword [ebp - 4], esi
cmp dword [ebx + 0xbc], 2
jne 0x43883c
mov edx, dword [ebx + 0x3e0]
mov eax, dword [edx + 0x198]
add ebx, 0x3e0
mov ecx, ebx
mov dword [ebp - 0x70], esi
mov dword [ebp - 0x68], ebx
call eax
mov dword [ebp - 0xac], eax
mov dword [ebp - 0x40], 0xffffffff
cmp eax, esi
jle 0x43883c
cmp byte [0x64440b], 2
je 0x43883c
mov edx, dword [ebx]
mov eax, dword [edx + 0x1b0]
push esi
mov ecx, ebx
call eax
movzx eax, al
test eax, eax
je 0x4387f7
mov edx, dword [ebx]
mov eax, dword [edx + 0x1a8]
push esi
mov ecx, ebx
mov dword [0x642a1c], 0x500
mov dword [0x642a20], 0x2b
call eax
test eax, eax
je 0x4387f7
mov eax, dword [eax + 4]
mov dword [ebp - 0x48], eax
test eax, eax
je 0x4387f7
cmp byte [eax + 0x32], 3
je 0x4387f7
xor eax, eax
push ecx
mov ecx, dword [ebp - 0x4c]
mov dword [ebp - 0x1f], eax
mov dword [ebp - 0x1b], eax
mov byte [ebp - 0x17], al
mov dword [ebp - 0x74], eax
mov dword [ebp - 0x78], eax
mov dword [ebp - 0x7c], eax
mov dword [ebp - 0xc4], eax
mov eax, dword [ecx + 0xb8]
sub eax, 0x10
mov dword [ebp - 0x38], esp
mov esi, esp
push eax
mov byte [ebp - 0x20], 0
lea edi, [ebp - 0x20]
call fcn.00432780
add eax, 0x10
add esp, 4
mov dword [esi], eax
call fcn.004467d0
add esp, 4
cmp al, 0xff
je 0x43881a
lea edx, [ebp - 0xc4]
push edx
lea eax, [ebp - 0x7c]
push eax
lea ecx, [ebp - 0x78]
push ecx
lea edx, [ebp - 0x74]
push edx
mov eax, edi
push eax
mov dword [0x642a1c], 0x500
mov dword [0x642a20], 0x2c
call sub.KERNEL32.dll_GetDiskFreeSpaceA
nop
push 0
test eax, eax
je 0x43880e
mov eax, dword [ebp - 0x7c]
mul dword [ebp - 0x78]
mov ecx, dword [ebp - 0x74]
push ecx
push edx
push eax
call fcn.005af0e0
mov esi, dword [ebp - 0x48]
mov edi, dword [esi + 0x20]
mov ecx, dword [esi + 0x24]
add edi, 0xa00000
adc ecx, 0
cmp edx, ecx
jb 0x43880c
ja 0x43762c
cmp eax, edi
jb 0x43880c
cmp byte [0x644406], 4
jne 0x43767a
mov eax, dword [esi + 0x28]
test eax, eax
je 0x43767a
lea esp, [esp]
cmp byte [eax + 0x32], 1
jne 0x43764f
mov eax, dword [eax + 0x28]
test eax, eax
jne 0x437640
jmp 0x43767a
sub esp, 0x38
mov esi, esp
mov dword [ebp - 0x38], esp
call fcn.0040caa0
mov ecx, dword [0x642a44]
add ecx, 0x260
push 0x642ae0
call fcn.00419700
or eax, edx
jne 0x43881a
mov eax, dword [ebp - 0x70]
mov edx, dword [ebx]
mov edx, dword [edx + 0x1c8]
push 4
push eax
lea ecx, [ebp - 0x44]
push ecx
mov ecx, ebx
call edx
push 0x7e
push 0x3a
lea eax, [ebp - 0x44]
push eax
mov byte [ebp - 4], 3
call fcn.0043ed30
push 0x7e
push 0x3f
lea ecx, [ebp - 0x44]
push ecx
call fcn.0043ed30
push 0x5c
push 0x2f
lea edx, [ebp - 0x44]
push edx
call fcn.0043ed30
push 0x7e
push 0x2a
lea eax, [ebp - 0x44]
push eax
call fcn.0043ed30
push 0x7e
push 0x22
lea ecx, [ebp - 0x44]
push ecx
call fcn.0043ed30
push 0x7e
push 0x22
lea edx, [ebp - 0x44]
push edx
call fcn.0043ed30
push 0x7e
push 0x7c
lea eax, [ebp - 0x44]
push eax
call fcn.0043ed30
push 0x28
push 0x3c
lea ecx, [ebp - 0x44]
push ecx
call fcn.0043ed30
push 0x29
push 0x3e
lea edx, [ebp - 0x44]
push edx
call fcn.0043ed30
mov edi, dword [ebp - 0x48]
push 0x7e
push 0x3a
add edi, 0x34
push edi
call fcn.0043ed30
push 0x7e
push 0x3f
push edi
call fcn.0043ed30
push 0x7e
push 0x2f
push edi
call fcn.0043ed30
push 0x7e
push 0x2a
push edi
call fcn.0043ed30
push 0x7e
push 0x22
push edi
call fcn.0043ed30
push 0x7e
push 0x22
push edi
call fcn.0043ed30
push 0x7e
push 0x7c
push edi
call fcn.0043ed30
push 0x28
push 0x3c
push edi
call fcn.0043ed30
push 0x29
push 0x3e
push edi
call fcn.0043ed30
push 0x7e
push 0x5c
push edi
call fcn.0043ed30
lea eax, [ebp - 0x44]
push eax
lea ecx, [ebp + 8]
push ecx
lea edx, [ebp - 0xbc]
push edx
call fcn.00431010
add esp, 0xc
push 0x60c3b4
push eax
lea eax, [ebp - 0xb4]
push eax
mov byte [ebp - 4], 4
call fcn.00431b20
add esp, 0xc
push edi
push eax
lea ecx, [ebp - 0x30]
push ecx
mov byte [ebp - 4], 5
call fcn.00431010
add esp, 0xc
lea ecx, [ebp - 0xb4]
call fcn.00432bf0
lea ecx, [ebp - 0xbc]
mov byte [ebp - 4], 8
call fcn.00432bf0
mov edx, dword [ebp + 8]
mov eax, dword [edx - 0xc]
push eax
push 0x60c3b4
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x38], 0
call fcn.00430fd0
mov esi, eax
lea eax, [ebp - 0x44]
push eax
lea ecx, [ebp + 8]
push ecx
lea edx, [ebp - 0x80]
push edx
call fcn.00431010
add esp, 0xc
push 0x60c3b4
push eax
lea eax, [ebp - 0x34]
push eax
mov byte [ebp - 4], 9
call fcn.00431b20
add esp, 0xc
lea ecx, [ebp - 0x80]
mov byte [ebp - 4], 0xb
call fcn.00432bf0
cmp esi, 0xffffffff
je 0x437ab4
push esi
lea ecx, [ebp - 0xcc]
push ecx
lea ecx, [ebp - 0x30]
call fcn.0043eea0
push eax
lea ecx, [ebp - 0x34]
mov byte [ebp - 4], 0xc
call fcn.004327f0
mov byte [ebp - 4], 0xb
mov eax, dword [ebp - 0xcc]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x43786e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x58]
call fcn.00432c10
mov byte [ebp - 4], 0xd
mov eax, dword [ebp - 0x30]
mov ecx, dword [eax - 0xc]
lea edx, [esi + 1]
cmp edx, ecx
jg 0x4378b6
sub ecx, esi
dec ecx
push ecx
lea eax, [ebp - 0x88]
push eax
lea ecx, [ebp - 0x30]
call fcn.0043ee20
push eax
lea ecx, [ebp - 0x58]
mov byte [ebp - 4], 0xe
call fcn.004327f0
lea ecx, [ebp - 0x88]
mov byte [ebp - 4], 0xd
call fcn.00432bf0
mov edx, dword [ebp - 0x34]
mov ecx, dword [edx - 8]
mov eax, 1
sub eax, dword [edx - 4]
or ecx, eax
jge 0x4378d5
push 0
lea ecx, [ebp - 0x34]
call fcn.00432990
mov edx, dword [ebp - 0x34]
mov ebx, dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
add edx, 4
push edx
call ebx
cmp eax, 0xffffffff
je 0x4378fc
test al, 0x10
jne 0x4378fc
push 0x60c3c8
lea ecx, [ebp - 0x34]
call fcn.00432240
add esi, 7
jmp 0x437909
push 0x60c3b4
lea ecx, [ebp - 0x34]
call fcn.00432240
mov edx, dword [ebp - 0x34]
mov ecx, dword [edx - 8]
mov eax, 1
sub eax, dword [edx - 4]
or ecx, eax
jge 0x437928
push 0
lea ecx, [ebp - 0x34]
call fcn.00432990
mov edx, dword [ebp - 0x34]
add edx, 4
push edx
call ebx
cmp eax, 0xffffffff
je 0x437937
test al, 0x10
jne 0x437969
mov edx, dword [ebp - 0x34]
mov ecx, dword [edx - 8]
mov eax, 1
sub eax, dword [edx - 4]
or ecx, eax
jge 0x437956
push 0
lea ecx, [ebp - 0x34]
call fcn.00432990
mov edx, dword [ebp - 0x34]
mov ebx, dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
push 0
push edx
call ebx
test eax, eax
je 0x4379f5
lea ecx, [ebp - 0x58]
push ecx
lea edx, [ebp - 0x34]
push edx
lea eax, [ebp - 0xb0]
push eax
call fcn.00431010
add esp, 0xc
push eax
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], 0x10
call fcn.004327f0
mov byte [ebp - 4], 0xd
mov eax, dword [ebp - 0xb0]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4379b3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
inc esi
push esi
push 0x60c3b4
lea ecx, [ebp - 0x30]
call fcn.00430fd0
mov esi, eax
mov byte [ebp - 4], 0xb
mov eax, dword [ebp - 0x58]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4379e7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp esi, 0xffffffff
jne 0x43782b
jmp 0x437ab4
mov ecx, dword [ebp - 0x34]
cmp dword [ecx - 0xc], 0x100
jl 0x437aa8
mov edx, dword [ebp - 0x4c]
add edx, 0xc424
push edx
lea ecx, [ebp - 0x34]
call fcn.004327f0
push edi
lea eax, [ebp - 0x34]
push eax
lea ecx, [ebp - 0x90]
push ecx
call fcn.00431010
add esp, 0xc
push eax
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], 0xf
call fcn.004327f0
lea ecx, [ebp - 0x90]
mov byte [ebp - 4], 0xd
call fcn.00432bf0
mov edx, dword [ebp - 0x34]
mov ecx, dword [edx - 8]
mov eax, 1
sub eax, dword [edx - 4]
or ecx, eax
jge 0x437a66
push 0
lea ecx, [ebp - 0x34]
call fcn.00432990
mov edx, dword [ebp - 0x34]
add edx, 4
push edx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x437a79
test al, 0x10
jne 0x437aa8
mov edx, dword [ebp - 0x34]
mov ecx, dword [edx - 8]
mov eax, 1
sub eax, dword [edx - 4]
or ecx, eax
jge 0x437a98
push 0
lea ecx, [ebp - 0x34]
call fcn.00432990
mov edx, dword [ebp - 0x34]
push 0
push edx
call ebx
test eax, eax
je 0x437aa8
mov dword [ebp - 0x38], 1
lea ecx, [ebp - 0x58]
mov byte [ebp - 4], 0xb
call fcn.00432bf0
cmp dword [ebp - 0x40], 0xffffffff
jne 0x4382d1
mov edx, dword [ebp - 0x30]
mov ecx, dword [edx - 8]
mov eax, 1
sub eax, dword [edx - 4]
or ecx, eax
jge 0x437add
push 0
lea ecx, [ebp - 0x30]
call fcn.00432990
mov edx, dword [ebp - 0x30]
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 0x437e10
mov eax, dword [ebp - 0x30]
mov edx, dword [eax - 8]
mov ecx, 1
sub ecx, dword [eax - 4]
or edx, ecx
jge 0x437b1d
push 0
lea ecx, [ebp - 0x30]
call fcn.00432990
mov eax, dword [ebp - 0x30]
push 0
push 0
push 1
push 0
push 3
push 0xc0000000
push eax
call esi
mov dword [ebp - 0x40], eax
cmp eax, 0xffffffff
jne 0x4382d1
mov edx, dword [ebp - 0x30]
cmp dword [edx - 0xc], 0x104
jl 0x4387d8
mov esi, dword [ebp - 0x4c]
push edi
add esi, 0xc424
lea eax, [ebp - 0xd0]
push esi
push eax
call fcn.00431010
add esp, 0xc
push eax
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], 0x11
call fcn.004327f0
lea ecx, [ebp - 0xd0]
mov byte [ebp - 4], 0xb
call fcn.00432bf0
cmp dword [ebp - 0x38], 0
jne 0x437bdb
mov eax, dword [esi]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
or eax, ecx
jge 0x437ba1
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 0x437bb6
test al, 0x10
jne 0x437bdb
mov eax, dword [esi]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
or eax, ecx
jge 0x437bd0
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 - 0x30]
mov ecx, dword [edx - 8]
mov eax, 1
sub eax, dword [edx - 4]
or ecx, eax
jge 0x437bfa
push 0
lea ecx, [ebp - 0x30]
call fcn.00432990
mov edx, dword [ebp - 0x30]
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 0x437c50
mov edx, dword [ebp - 0x30]
mov ecx, dword [edx - 8]
mov eax, 1
sub eax, dword [edx - 4]
or ecx, eax
jge 0x437c36
push 0
lea ecx, [ebp - 0x30]
call fcn.00432990
mov edx, dword [ebp - 0x30]
push 0
push 0
push 1
push 0
push 3
push 0xc0000000
push edx
call ebx
mov dword [ebp - 0x40], eax
jmp 0x4382c7
mov ecx, dword [esi]
cmp dword [ecx - 0xc], 0x104
jge 0x4387d8
lea ecx, [ebp - 0x60]
call fcn.00432c10
mov byte [ebp - 4], 0x12
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 - 0x38], esp
push eax
sub ebx, ecx
call fcn.00432780
mov edx, dword [ebp - 0x38]
add eax, 0x10
add esp, 4
mov dword [edx], eax
lea eax, [ebp - 0x60]
push eax
push ecx
mov byte [ebp - 4], 0x13
mov eax, dword [edi]
mov dword [ebp - 0x38], esp
sub eax, 0x10
mov dword [ebp - 0x38], esp
push eax
call fcn.00432780
mov ecx, dword [ebp - 0x38]
add eax, 0x10
mov dword [ecx], eax
add esp, 4
mov ecx, ebx
mov byte [ebp - 4], 0x12
call fcn.0044efa0
add esp, 0x10
test eax, eax
je 0x437e08
lea edx, [ebp - 0x60]
push edx
lea eax, [ebp - 0x98]
push esi
push eax
call fcn.00431010
add esp, 0xc
push eax
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], 0x14
call fcn.004327f0
lea ecx, [ebp - 0x98]
mov byte [ebp - 4], 0x12
call fcn.00432bf0
mov edx, dword [ebp - 0x30]
mov ecx, dword [edx - 8]
mov eax, 1
sub eax, dword [edx - 4]
or ecx, eax
jge 0x437d1e
push 0
lea ecx, [ebp - 0x30]
call fcn.00432990
mov edx, dword [ebp - 0x30]
push 0
push 0
push 1
push 0
push 3
push 0xc0000000
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [ebp - 0x40], eax
cmp eax, 0xffffffff
jne 0x437e08
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 - 0x38], esp
push eax
sub ebx, ecx
call fcn.00432780
mov ecx, dword [ebp - 0x38]
add eax, 0x10
add esp, 4
mov dword [ecx], eax
lea edx, [ebp - 0x60]
push edx
push ecx
mov byte [ebp - 4], 0x15
mov eax, dword [edi]
mov dword [ebp - 0x38], esp
sub eax, 0x10
mov dword [ebp - 0x38], esp
push eax
call fcn.00432780
mov ecx, dword [ebp - 0x38]
add eax, 0x10
mov dword [ecx], eax
add esp, 4
mov ecx, ebx
mov byte [ebp - 4], 0x12
call fcn.0044efa0
add esp, 0x10
test eax, eax
je 0x437e08
lea edx, [ebp - 0x60]
push edx
lea eax, [ebp - 0xb8]
push esi
push eax
call fcn.00431010
add esp, 0xc
push eax
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], 0x16
call fcn.004327f0
lea ecx, [ebp - 0xb8]
mov byte [ebp - 4], 0x12
call fcn.00432bf0
mov edx, dword [ebp - 0x30]
mov ecx, dword [edx - 8]
mov eax, 1
sub eax, dword [edx - 4]
or ecx, eax
jge 0x437def
push 0
lea ecx, [ebp - 0x30]
call fcn.00432990
mov edx, dword [ebp - 0x30]
push 0
push 0
push 1
push 0
push 3
push 0xc0000000
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [ebp - 0x40], eax
lea ecx, [ebp - 0x60]
jmp 0x4382be
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0x2e
mov ecx, edi
call fcn.0043edf0
lea ecx, [ebp - 0x64]
mov esi, eax
call fcn.00432c10
lea ecx, [ebp - 0x6c]
call fcn.00432c10
mov bl, 0x18
mov byte [ebp - 4], bl
cmp esi, 0xffffffff
je 0x437e96
push esi
lea ecx, [ebp - 0xa0]
push ecx
mov ecx, edi
call fcn.0043eea0
push eax
lea ecx, [ebp - 0x64]
mov byte [ebp - 4], 0x19
call fcn.004327f0
lea ecx, [ebp - 0xa0]
mov byte [ebp - 4], bl
call fcn.00432bf0
mov edx, dword [edi]
mov eax, dword [edx - 0xc]
sub eax, esi
push eax
lea eax, [ebp - 0xc8]
push eax
mov ecx, edi
call fcn.0043ee20
push eax
lea ecx, [ebp - 0x6c]
mov byte [ebp - 4], 0x1a
call fcn.004327f0
lea ecx, [ebp - 0xc8]
call fcn.00432bf0
jmp 0x437e9f
push edi
lea ecx, [ebp - 0x64]
call fcn.004327f0
lea ecx, [ebp - 0x3c]
call fcn.00432c10
mov byte [ebp - 4], 0x1b
mov ebx, 1
xor eax, eax
push ebx
lea ecx, [ebp - 0x2c]
push 0x60c3d4
push ecx
mov byte [ebp - 0x2c], 0
mov dword [ebp - 0x2b], eax
mov dword [ebp - 0x27], eax
mov word [ebp - 0x23], ax
mov byte [ebp - 0x21], al
call fcn.005acd60
add esp, 0xc
lea edx, [ebp - 0x64]
push edx
lea eax, [ebp - 0x34]
push eax
lea ecx, [ebp - 0x84]
push ecx
call fcn.00431010
add esp, 0xc
lea edx, [ebp - 0x2c]
push edx
push eax
lea eax, [ebp - 0xc0]
push eax
mov byte [ebp - 4], 0x1c
call fcn.00431b20
add esp, 0xc
lea ecx, [ebp - 0x6c]
push ecx
push eax
lea edx, [ebp - 0xa8]
push edx
mov byte [ebp - 4], 0x1d
call fcn.00431010
add esp, 0xc
push eax
lea ecx, [ebp - 0x3c]
mov byte [ebp - 4], 0x1e
call fcn.004327f0
lea ecx, [ebp - 0xa8]
call fcn.00432bf0
lea ecx, [ebp - 0xc0]
call fcn.00432bf0
lea ecx, [ebp - 0x84]
mov byte [ebp - 4], 0x1b
call fcn.00432bf0
mov esi, dword [ebp - 0x3c]
mov ecx, dword [esi - 8]
mov eax, 1
sub eax, dword [esi - 4]
or ecx, eax
jge 0x437f6d
push 0
lea ecx, [ebp - 0x3c]
call fcn.00432990
mov esi, dword [ebp - 0x3c]
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 0x437f9c
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
inc ebx
cmp ebx, 0x989680
jb 0x437eb0
mov ecx, dword [esi - 8]
mov eax, 1
sub eax, dword [esi - 4]
or ecx, eax
jge 0x437fb8
push 0
lea ecx, [ebp - 0x3c]
call fcn.00432990
mov esi, dword [ebp - 0x3c]
push 0
push 0
push 1
push 0
push 3
push 0xc0000000
push esi
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [ebp - 0x40], eax
cmp eax, 0xffffffff
jne 0x4382ab
cmp dword [esi - 0xc], 0x104
jl 0x4382ab
mov esi, dword [ebp - 0x4c]
push edi
add esi, 0xc424
lea eax, [ebp - 0x8c]
push esi
push eax
call fcn.00431010
add esp, 0xc
push eax
lea ecx, [ebp - 0x3c]
mov byte [ebp - 4], 0x1f
call fcn.004327f0
lea ecx, [ebp - 0x8c]
mov byte [ebp - 4], 0x1b
call fcn.00432bf0
cmp dword [ebp - 0x38], 0
jne 0x438077
mov eax, dword [esi]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
or eax, ecx
jge 0x43803d
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 0x438052
test al, 0x10
jne 0x438077
mov eax, dword [esi]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
or eax, ecx
jge 0x43806c
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 - 0x3c]
mov ecx, dword [ebx - 8]
mov eax, 1
sub eax, dword [ebx - 4]
or ecx, eax
jge 0x438096
push 0
lea ecx, [ebp - 0x3c]
call fcn.00432990
mov ebx, dword [ebp - 0x3c]
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 0x4380eb
mov ecx, dword [ebx - 8]
mov eax, 1
sub eax, dword [ebx - 4]
or ecx, eax
jge 0x4380cd
push 0
lea ecx, [ebp - 0x3c]
call fcn.00432990
mov ebx, dword [ebp - 0x3c]
push 0
push 0
push 1
push 0
push 3
push 0xc0000000
push ebx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [ebp - 0x40], eax
jmp 0x4382ab
mov ecx, dword [esi]
cmp dword [ecx - 0xc], 0x104
jge 0x4382ab
lea ecx, [ebp - 0x5c]
call fcn.00432c10
mov byte [ebp - 4], 0x20
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 - 0x38], esp
push eax
sub ebx, ecx
call fcn.00432780
mov edx, dword [ebp - 0x38]
add eax, 0x10
add esp, 4
mov dword [edx], eax
lea eax, [ebp - 0x5c]
push eax
push ecx
mov byte [ebp - 4], 0x21
mov eax, dword [edi]
mov dword [ebp - 0x38], esp
sub eax, 0x10
mov dword [ebp - 0x38], esp
push eax
call fcn.00432780
mov ecx, dword [ebp - 0x38]
add eax, 0x10
mov dword [ecx], eax
add esp, 4
mov ecx, ebx
mov byte [ebp - 4], 0x20
call fcn.0044efa0
add esp, 0x10
test eax, eax
je 0x4382a3
lea edx, [ebp - 0x5c]
push edx
lea eax, [ebp - 0x94]
push esi
push eax
call fcn.00431010
add esp, 0xc
push eax
lea ecx, [ebp - 0x3c]
mov byte [ebp - 4], 0x22
call fcn.004327f0
lea ecx, [ebp - 0x94]
mov byte [ebp - 4], 0x20
call fcn.00432bf0
mov edx, dword [ebp - 0x3c]
mov ecx, dword [edx - 8]
mov eax, 1
sub eax, dword [edx - 4]
or ecx, eax
jge 0x4381b9
push 0
lea ecx, [ebp - 0x3c]
call fcn.00432990
mov edx, dword [ebp - 0x3c]
push 0
push 0
push 1
push 0
push 3
push 0xc0000000
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [ebp - 0x40], eax
cmp eax, 0xffffffff
jne 0x4382a3
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 - 0x38], esp
push eax
sub ebx, ecx
call fcn.00432780
mov ecx, dword [ebp - 0x38]
add eax, 0x10
add esp, 4
mov dword [ecx], eax
lea edx, [ebp - 0x5c]
push edx
push ecx
mov byte [ebp - 4], 0x23
mov eax, dword [edi]
mov dword [ebp - 0x38], esp
sub eax, 0x10
mov dword [ebp - 0x38], esp
push eax
call fcn.00432780
mov ecx, dword [ebp - 0x38]
add eax, 0x10
mov dword [ecx], eax
add esp, 4
mov ecx, ebx
mov byte [ebp - 4], 0x20
call fcn.0044efa0
add esp, 0x10
test eax, eax
je 0x4382a3
lea edx, [ebp - 0x5c]
push edx
lea eax, [ebp - 0x9c]
push esi
push eax
call fcn.00431010
add esp, 0xc
push eax
lea ecx, [ebp - 0x3c]
mov byte [ebp - 4], 0x24
call fcn.004327f0
lea ecx, [ebp - 0x9c]
mov byte [ebp - 4], 0x20
call fcn.00432bf0
mov edx, dword [ebp - 0x3c]
mov ecx, dword [edx - 8]
mov eax, 1
sub eax, dword [edx - 4]
or ecx, eax
jge 0x43828a
push 0
lea ecx, [ebp - 0x3c]
call fcn.00432990
mov edx, dword [ebp - 0x3c]
push 0
push 0
push 1
push 0
push 3
push 0xc0000000
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [ebp - 0x40], eax
lea ecx, [ebp - 0x5c]
call fcn.00432bf0
lea ecx, [ebp - 0x3c]
call fcn.00432bf0
lea ecx, [ebp - 0x6c]
call fcn.00432bf0
lea ecx, [ebp - 0x64]
mov byte [ebp - 4], 0xb
call fcn.00432bf0
cmp dword [ebp - 0x40], 0xffffffff
je 0x4387d8
mov al, byte [0x644405]
cmp al, 0x36
ja 0x4387d8
test al, al
je 0x4387d8
movzx ecx, al
cmp dword [ecx*4 + 0x644234], 0
je 0x4387d8
mov ecx, dword [ebp - 0x48]
mov edx, dword [ecx + 0x20]
mov eax, dword [ebp - 0x4c]
mov dword [eax + 0x5300], edx
mov ecx, dword [ecx + 0x24]
mov dword [eax + 0x5304], ecx
lea ecx, [eax + 0x5308]
push edi
mov dword [ebp - 0x38], ecx
call fcn.004327f0
mov eax, dword [ebp - 0x48]
xor esi, esi
mov dword [0x644418], esi
mov dword [0x64441c], esi
mov edx, dword [eax + 0x20]
xor ebx, ebx
or edx, dword [eax + 0x24]
je 0x438681
mov dl, byte [eax + 0x31]
mov al, byte [0x644405]
cmp al, dl
jne 0x4383c3
mov cl, byte [0x644406]
cmp cl, 2
jne 0x4383c9
movzx ecx, al
mov ecx, dword [ecx*4 + 0x644234]
mov cl, byte [ecx + 4]
cmp cl, 0xb
je 0x43836b
cmp cl, 0xc
jne 0x4383c3
mov eax, dword [ebp - 0x48]
sub esp, 0x38
mov esi, esp
mov dword [0x642a1c], 0x500
mov dword [0x642a20], 0x2d
mov dword [ebp - 0x54], esp
call fcn.0040caa0
mov byte [ebp - 4], 0x26
mov eax, dword [ebp + 8]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x50], esp
mov esi, esp
push eax
call fcn.00432780
mov edx, dword [ebp - 0x40]
add eax, 0x10
mov dword [esi], eax
add esp, 4
mov ecx, 0x642ae0
mov byte [ebp - 4], 0xb
call fcn.00426ab0
jmp 0x43867d
mov cl, byte [0x644406]
cmp al, dl
jne 0x438681
cmp cl, 2
jne 0x438423
movzx ecx, al
mov ecx, dword [ecx*4 + 0x644234]
cmp byte [ecx + 4], 7
jne 0x43841d
mov eax, dword [ebp - 0x48]
sub esp, 0x38
mov esi, esp
mov dword [0x642a1c], 0x500
mov dword [0x642a20], 0x2f
mov dword [ebp - 0x50], esp
call fcn.0040caa0
mov edx, dword [ebp - 0x40]
push edx
mov ecx, 0x642ae0
call fcn.004274e0
jmp 0x43867d
mov cl, byte [0x644406]
cmp al, dl
jne 0x438681
cmp cl, 2
jne 0x43849e
movzx ecx, al
mov ecx, dword [ecx*4 + 0x644234]
cmp byte [ecx + 4], 0xfd
jne 0x438498
mov eax, dword [ebp - 0x48]
sub esp, 0x38
mov esi, esp
mov dword [0x642a1c], 0x500
mov dword [0x642a20], 0x31
mov dword [ebp - 0x50], esp
call fcn.0040caa0
mov byte [ebp - 4], 0x2b
mov eax, dword [ebp + 8]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x54], esp
mov esi, esp
push eax
call fcn.00432780
mov edx, dword [ebp - 0x40]
add eax, 0x10
mov dword [esi], eax
add esp, 4
mov ecx, 0x642ae0
mov byte [ebp - 4], 0xb
call fcn.00426530
jmp 0x43867d
mov cl, byte [0x644406]
cmp al, dl
jne 0x438681
cmp cl, 1
jne 0x438519
mov cl, byte [0x644408]
cmp cl, 0xb
je 0x4384bb
cmp cl, 0xc
jne 0x438513
mov eax, dword [ebp - 0x48]
sub esp, 0x38
mov esi, esp
mov dword [0x642a1c], 0x500
mov dword [0x642a20], 0x33
mov dword [ebp - 0x50], esp
call fcn.0040caa0
mov byte [ebp - 4], 0x2e
mov eax, dword [ebp + 8]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x54], esp
mov esi, esp
push eax
call fcn.00432780
mov ebx, dword [ebp - 0x40]
add eax, 0x10
mov dword [esi], eax
add esp, 4
mov ecx, 0x642ae0
mov byte [ebp - 4], 0xb
call fcn.00427910
jmp 0x43867d
mov cl, byte [0x644406]
cmp al, dl
jne 0x438681
cmp cl, 1
jne 0x43856c
cmp byte [0x644408], 7
jne 0x438566
mov eax, dword [ebp - 0x48]
sub esp, 0x38
mov esi, esp
mov dword [0x642a1c], 0x500
mov dword [0x642a20], 0x35
mov dword [ebp - 0x50], esp
call fcn.0040caa0
mov edx, dword [ebp - 0x40]
push edx
mov ecx, 0x642ae0
call fcn.00427a70
jmp 0x43867d
mov cl, byte [0x644406]
cmp al, dl
jne 0x438681
cmp cl, 1
jne 0x4385e0
cmp byte [0x644408], 0xfd
jne 0x4385da
mov eax, dword [ebp - 0x48]
sub esp, 0x38
mov esi, esp
mov dword [0x642a1c], 0x500
mov dword [0x642a20], 0x37
mov dword [ebp - 0x50], esp
call fcn.0040caa0
mov byte [ebp - 4], 0x33
mov eax, dword [ebp + 8]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x54], esp
mov esi, esp
push eax
call fcn.00432780
mov ebx, dword [ebp - 0x40]
add eax, 0x10
mov dword [esi], eax
add esp, 4
mov ecx, 0x642ae0
mov byte [ebp - 4], 0xb
call fcn.00427770
jmp 0x43867d
mov cl, byte [0x644406]
cmp al, dl
jne 0x438681
cmp cl, 3
jne 0x438621
mov eax, dword [ebp - 0x48]
sub esp, 0x38
mov esi, esp
mov dword [0x642a1c], 0x500
mov dword [0x642a20], 0x39
mov dword [ebp - 0x50], esp
call fcn.0040caa0
mov eax, dword [ebp - 0x40]
push eax
push 0x642ae0
call fcn.0040d200
jmp 0x43867d
cmp al, dl
jne 0x438681
cmp cl, 4
jne 0x438681
mov eax, dword [ebp - 0x48]
sub esp, 0x38
mov esi, esp
mov dword [0x642a1c], 0x500
mov dword [0x642a20], 0x3b
mov dword [ebp - 0x50], esp
call fcn.0040caa0
mov byte [ebp - 4], 0x38
mov eax, dword [ebp + 8]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x54], esp
mov esi, esp
push eax
call fcn.00432780
mov ebx, dword [ebp - 0x40]
add eax, 0x10
mov dword [esi], eax
add esp, 4
mov ecx, 0x642ae0
mov byte [ebp - 4], 0xb
call fcn.004224c0
mov ebx, edx
mov esi, eax
mov ecx, dword [ebp - 0x40]
push ecx
mov dword [0x642a1c], 0x500
mov dword [0x642a20], 0x3d
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0x4c]
inc dword [eax + 0x52f0]
xor ecx, ecx
mov dword [eax + 0x5300], ecx
mov dword [eax + 0x5304], ecx
mov ecx, dword [ebp - 0x38]
push 0x60b980
mov dword [ebp - 0x40], 0xffffffff
call fcn.00432b40
mov ecx, dword [ebp - 0x48]
mov edx, dword [ecx + 0x20]
mov eax, dword [ebp - 0x4c]
add dword [eax + 0x52e8], edx
mov ecx, dword [ecx + 0x24]
push 0x642ac4
adc dword [eax + 0x52ec], ecx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push 0x60c3dc
lea edx, [ebp - 0xa4]
push edi
push edx
call fcn.00431b20
add esp, 0xc
push eax
mov ecx, 0x644428
mov byte [ebp - 4], 0x3b
call fcn.004327f0
lea ecx, [ebp - 0xa4]
mov byte [ebp - 4], 0xb
call fcn.00432bf0
push 0x3c
lea eax, [ebp - 0x10c]
push 0
push eax
call fcn.005afd80
mov ecx, dword [ebp - 0x4c]
or dword [ebp - 0x10c], 1
add esp, 0xc
add ecx, 0x51f8
call fcn.00431cc0
mov edx, dword [0x644428]
mov dword [ebp - 0x108], eax
mov ecx, dword [edx - 8]
mov eax, 1
sub eax, dword [edx - 4]
or ecx, eax
jge 0x438775
push 0
mov ecx, 0x644428
call fcn.00432990
mov edx, dword [0x644428]
lea ecx, [ebp - 0x10c]
push ecx
mov dword [ebp - 0xf8], edx
mov edx, dword [ebp - 0x4c]
mov eax, dword [edx + 0x5218]
push 0
push 0x1007
mov edi, 0x500
push eax
mov dword [0x642a1c], edi
mov dword [0x642a20], 0x3e
call dword [sym.imp.USER32.dll_SendMessageA]
push 0x642ac4
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
or esi, ebx
mov eax, 0x3f
mov dword [ebp - 0x50], eax
mov dword [0x642a1c], edi
mov dword [0x642a20], eax
jne 0x4387d8
cmp dword [0x644468], esi
je 0x438824
lea ecx, [ebp - 0x34]
call fcn.00432bf0
lea ecx, [ebp - 0x30]
call fcn.00432bf0
lea ecx, [ebp - 0x44]
mov byte [ebp - 4], 0
call fcn.00432bf0
mov ebx, dword [ebp - 0x68]
mov esi, dword [ebp - 0x70]
inc esi
mov dword [ebp - 0x70], esi
cmp esi, dword [ebp - 0xac]
jl 0x437506
jmp 0x43883c
push 0
push 0
push 0x60aea0
call fcn.00494a09
lea ecx, [ebp + 8]
call fcn.00432bf0
jmp 0x438862
lea ecx, [ebp - 0x34]
call fcn.00432bf0
lea ecx, [ebp - 0x30]
call fcn.00432bf0
lea ecx, [ebp - 0x44]
call fcn.00432bf0
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp + 8]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x438862
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.005ac396
mov esp, ebp
pop ebp
ret 4