Function at 0x401920
Capabilities:
Create directory

Disassembly:
sub esp, 0x520
mov eax, dword [0x447648]
push ebx
push ebp
push esi
mov esi, dword [esp + 0x530]
push edi
mov dword [esp + 0x52c], eax
lea eax, [esp + 0x18]
push eax
push 0x43c54c
push esi
call fcn.0040f6f0
mov edi, eax
xor ebp, ebp
cmp edi, ebp
jne 0x401997
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
sub esp, 0x14
mov ecx, esp
mov dword [ecx], edx
mov edx, dword [esp + 0x34]
mov dword [ecx + 4], eax
mov eax, dword [esp + 0x38]
mov dword [ecx + 8], edx
mov edx, dword [esp + 0x3c]
mov dword [ecx + 0xc], eax
mov dword [ecx + 0x10], edx
call fcn.004103d0
push eax
push str.grflib_failure_message:__s
push ebp
call fcn.004021f0
add esp, 0xc
xor eax, eax
jmp 0x401c14
mov eax, dword [edi + 0x10]
mov ecx, dword [0x4489e8]
push eax
push ebp
push 0x406
push ecx
call dword [sym.imp.USER32.dll_SendMessageA]
push esi
push str.Status:_Extracting__s..._r_nInfo:_______r_nProgress:_____
call fcn.00401e30
mov eax, dword [edi + 0x10]
add esp, 8
cmp eax, ebp
mov dword [esp + 0x10], ebp
jbe 0x401c09
jmp 0x4019d0
mov dword [esp + 0x14], 0
jmp 0x4019e0
mov esi, dword [esp + 0x538]
mov ebx, dword [sym.imp.KERNEL32.dll_lstrcmpiA]
push 0x43c5a4
push esi
call ebx
test eax, eax
jne 0x401a12
mov edx, dword [edi + 0x14]
lea eax, [edx + ebp + 0x15]
lea edx, [esp + 0x2c]
sub edx, eax
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x401a06
jmp 0x401a53
push 0x43c5a8
push esi
call ebx
test eax, eax
jne 0x401a43
push 0x43c5ac
lea eax, [esp + 0x30]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov ecx, dword [edi + 0x14]
lea edx, [ecx + ebp + 0x15]
push edx
lea eax, [esp + 0x30]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
jmp 0x401a53
push esi
push str.Invalid_patch_list_string:__s__n2nd_flag_must_be:_FLD_or_GRF
push 1
call fcn.004021f0
add esp, 0xc
lea ecx, [esp + 0x2c]
push ecx
call fcn.00401040
mov ebx, eax
mov esi, 1
cmp ebx, esi
jl 0x401a97
push esi
lea edx, [esp + 0x30]
push edx
call section..text
push eax
lea eax, [esp + 0x230]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push 0
lea ecx, [esp + 0x230]
push ecx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
inc esi
cmp esi, ebx
jle 0x401a68
lea edx, [esp + 0x2c]
push edx
mov eax, edx
push eax
call fcn.00410120
mov ecx, dword [edi + 0x14]
lea eax, [ecx + ebp]
test byte [eax + 0x10], 1
je 0x401bce
cmp dword [eax], 0x714
jne 0x401adb
cmp dword [eax + 4], 0x449
jne 0x401adb
cmp dword [eax + 8], 0x55c
jne 0x401adb
cmp dword [eax + 0xc], 0x58a
je 0x401bce
mov esi, dword [esp + 0x10]
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x30]
push eax
push esi
push edi
call fcn.0040fa30
test eax, eax
jg 0x401b69
mov eax, dword [esp + 0x14]
test eax, eax
jne 0x401b85
mov edx, dword [edi + 0x14]
push 0x100
lea ecx, [esp + 0x330]
push ecx
push 0xffffffffffffffff
lea eax, [edx + ebp + 0x15]
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
push 0
push 0
push 0x100
lea ecx, [esp + 0x138]
push ecx
push 0xffffffffffffffff
lea edx, [esp + 0x340]
push edx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov ecx, dword [edi + 0x14]
lea eax, [esp + 0x12c]
push eax
lea edx, [ecx + ebp + 0x15]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov dword [esp + 0x14], 1
jmp 0x4019e0
mov eax, dword [edi + 0x10]
mov ecx, dword [edi + 0x14]
push eax
push esi
lea edx, [ecx + ebp + 0x15]
push edx
push str.Status:__s..._r_nInfo:__d_of__d_extracted_r_nProgress:_____
call fcn.00401e30
add esp, 0x10
jmp 0x401bdf
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
sub esp, 0x14
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [esp + 0x34]
mov dword [eax + 4], edx
mov edx, dword [esp + 0x38]
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x3c]
mov dword [eax + 0xc], edx
mov dword [eax + 0x10], ecx
call fcn.004103d0
mov edx, dword [esp + 0x18]
push eax
mov eax, dword [edi + 0x14]
push edx
lea ecx, [eax + ebp + 0x15]
push ecx
push str.Failed_to_extract__s__code:__d___s__n
call fcn.00401ec0
add esp, 0x10
jmp 0x401bdf
push 0
lea edx, [esp + 0x30]
push edx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
mov esi, dword [esp + 0x10]
mov eax, dword [0x4489e8]
push 0
inc esi
push esi
push 0x402
push eax
call dword [sym.imp.USER32.dll_SendMessageA]
mov eax, dword [edi + 0x10]
add ebp, 0x121
cmp esi, eax
mov dword [esp + 0x10], esi
jb 0x4019d0
push edi
call fcn.0040eff0
mov eax, 1
mov ecx, dword [esp + 0x52c]
call fcn.0042b7bd
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x520
ret 8