Function at 0x421b10
Capabilities:
Create directory
Extract resource via kernel32 functions

Disassembly:
push 0xffffffffffffffff
push 0x5d1a4e
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x864
push ebx
push ebp
lea ebp, [ecx + 0xd8]
push esi
mov dword [esp + 0x1c], ecx
push edi
mov ecx, ebp
xor ebx, ebx
xor edi, edi
call fcn.00596130
push str.workspace
push ebx
mov ecx, ebp
call fcn.00596150
cmp eax, ebx
je 0x421cb1
push str.language
push eax
mov ecx, ebp
call fcn.00596150
mov esi, eax
cmp esi, ebx
je 0x421cb1
mov eax, dword [esp + 0x20]
mov ecx, ebp
add eax, 0x15c
push eax
push str.value
push esi
call fcn.00596480
push ebx
push esi
mov ecx, ebp
call fcn.00596150
mov esi, eax
cmp esi, ebx
je 0x421cb1
push 0x400
lea ecx, [esp + 0x6c]
mov dword [esp + 0x70], ebx
mov dword [esp + 0x74], ebx
mov dword [esp + 0x6c], ebx
call fcn.0041b410
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x87c], ebx
push ecx
push str.value
push esi
mov ecx, ebp
call fcn.00596480
mov eax, dword [esp + 0x68]
lea ecx, [esp + 0x74]
mov dx, word [eax]
and edx, 0xfefe
cmp edx, 0xfefe
jne 0x421be9
add eax, 2
lea edx, [esp + 0x74]
test edx, edx
je 0x421c63
mov dl, byte [eax]
test dl, dl
je 0x421c5e
test dl, 0x80
jne 0x421c09
movsx dx, dl
mov word [ecx], dx
add ecx, 2
inc eax
jmp 0x421c58
mov si, word [eax]
and esi, 0xc0e0
cmp esi, 0x80c0
jne 0x421c29
and dl, 0x1f
movsx dx, dl
shl edx, 6
mov word [ecx], dx
jmp 0x421c46
and dl, 0xf
movsx dx, dl
shl edx, 0xc
inc eax
mov word [ecx], dx
mov dl, byte [eax]
and dl, 0x3f
movsx dx, dl
shl edx, 6
add word [ecx], dx
mov dl, byte [eax + 1]
inc eax
and dl, 0x3f
movsx dx, dl
add word [ecx], dx
inc eax
add ecx, 2
mov dl, byte [eax]
test dl, dl
jne 0x421bf7
mov word [ecx], bx
jmp 0x421c90
mov cl, byte [eax]
test cl, cl
je 0x421c90
test cl, 0x80
jne 0x421c71
inc eax
jmp 0x421c8a
mov cx, word [eax]
and ecx, 0xc0e0
cmp ecx, 0x80c0
jne 0x421c87
add eax, 2
jmp 0x421c8a
add eax, 3
mov cl, byte [eax]
test cl, cl
jne 0x421c69
mov edx, dword [esp + 0x68]
mov esi, 1
push edx
mov edi, esi
mov dword [esp + 0x880], 0xffffffff
call fcn.005b44c3
add esp, 4
jmp 0x421cb6
mov esi, 1
mov ecx, ebp
call fcn.00596140
cmp edi, ebx
jne 0x421ce9
mov edi, dword [esp + 0x20]
push str.English_US
lea eax, [edi + 0x15c]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea ecx, [esp + 0x74]
push str.en_us.xml
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
jmp 0x421ced
mov edi, dword [esp + 0x20]
lea ecx, [esp + 0x28]
call fcn.0041b1a0
lea ecx, [esp + 0x34]
mov dword [esp + 0x87c], esi
call fcn.0041b1a0
lea ecx, [esp + 0x40]
mov byte [esp + 0x87c], 2
call fcn.0041b1a0
lea ecx, [esp + 0x4c]
mov byte [esp + 0x87c], 3
call fcn.0041b1a0
lea ecx, [esp + 0x58]
mov byte [esp + 0x87c], 4
call fcn.0041b1a0
lea edx, [edi + 0x11c]
lea ecx, [esp + 0x24]
push edx
mov byte [esp + 0x880], 5
call fcn.00401750
push 0x20
lea ecx, [esp + 0x18]
mov dword [esp + 0x880], 6
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x18], ebx
call fcn.00401510
mov eax, dword [esp + 0x14]
mov dword [esp + 0x1c], ebx
push 0x623528
lea ecx, [esp + 0x18]
mov byte [esp + 0x880], 7
mov word [eax], bx
call fcn.00401610
cmp dword [esp + 0x24], esi
je 0x421db3
push 0x5c
lea ecx, [esp + 0x50]
call fcn.00405b40
lea ecx, [esp + 0x14]
push ecx
lea ecx, [esp + 0x50]
call fcn.004018e0
mov edx, dword [esp + 0x14]
lea eax, [esp + 0x74]
mov dword [esp + 0x1c], ebx
push eax
lea ecx, [esp + 0x18]
mov word [edx], bx
call fcn.00401610
cmp dword [esp + 0x1c], ebx
je 0x421e10
lea ecx, [esp + 0x14]
mov dword [esp + 0x24], esi
push ecx
lea ecx, [esp + 0x38]
call fcn.00405c40
mov edx, dword [esp + 0x40]
mov dword [esp + 0x48], ebx
push 0x2e
lea ecx, [esp + 0x38]
mov word [edx], bx
call fcn.004015e0
cmp eax, ebx
jle 0x421e2a
lea ecx, [esp + 0x40]
inc eax
push ecx
push eax
lea ecx, [esp + 0x3c]
call fcn.00401350
jmp 0x421e2a
mov edx, dword [esp + 0x34]
mov dword [esp + 0x24], ebx
mov dword [esp + 0x3c], ebx
mov word [edx], bx
mov eax, dword [esp + 0x40]
mov dword [esp + 0x48], ebx
mov word [eax], bx
lea ecx, [esp + 0x10]
call fcn.0053de30
lea ecx, [esp + 0x28]
mov byte [esp + 0x87c], 8
push ecx
lea ecx, [esp + 0x5c]
call fcn.00405c40
push 0x3a
lea ecx, [esp + 0x5c]
call fcn.00405b40
lea edx, [esp + 0x4c]
lea ecx, [esp + 0x58]
push edx
call fcn.004018e0
mov eax, dword [esp + 0x34]
cmp word [eax], bx
je 0x421e84
push 0x5c
lea ecx, [esp + 0x5c]
call fcn.00405b40
lea ecx, [esp + 0x34]
push ecx
lea ecx, [esp + 0x5c]
call fcn.004018e0
mov edx, dword [esp + 0x58]
push 0x637cb8
push edx
lea ecx, [esp + 0x18]
call fcn.0053de50
test eax, eax
je 0x42201c
lea esi, [edi + 0x55c]
mov ecx, 0x100
xor eax, eax
mov edi, esi
rep stosd dword es:[edi], eax
lea eax, [esp + 0x28]
lea ecx, [esp + 0x58]
push eax
call fcn.00405c40
push 0x3a
lea ecx, [esp + 0x5c]
call fcn.00405b40
lea ecx, [esp + 0x4c]
push ecx
lea ecx, [esp + 0x5c]
call fcn.004018e0
mov edx, dword [esp + 0x34]
cmp word [edx], bx
je 0x421ef9
push 0x5c
lea ecx, [esp + 0x5c]
call fcn.00405b40
lea eax, [esp + 0x34]
lea ecx, [esp + 0x58]
push eax
call fcn.004018e0
mov edi, dword [esp + 0x60]
lea ecx, [esp + 0x28]
push ecx
lea ecx, [esp + 0x5c]
call fcn.00405c40
push 0x3a
lea ecx, [esp + 0x5c]
call fcn.00405b40
lea edx, [esp + 0x4c]
lea ecx, [esp + 0x58]
push edx
call fcn.004018e0
mov eax, dword [esp + 0x34]
cmp word [eax], bx
je 0x421f46
push 0x5c
lea ecx, [esp + 0x5c]
call fcn.00405b40
lea ecx, [esp + 0x34]
push ecx
lea ecx, [esp + 0x5c]
call fcn.004018e0
mov edx, dword [esp + 0x58]
push ebx
push ebx
push 0x400
push esi
push edi
push edx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
lea ecx, [esp + 0x10]
call fcn.0053df80
mov ebp, eax
push ebp
call fcn.005b449a
mov esi, eax
add esp, 4
cmp esi, ebx
je 0x421fb6
mov ecx, ebp
xor eax, eax
mov edx, ecx
mov edi, esi
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
push ebp
and ecx, 3
push esi
rep stosb byte es:[edi], al
lea ecx, [esp + 0x18]
call fcn.0053dfb0
mov ecx, dword [esp + 0x20]
push ebp
push esi
call fcn.00422220
test eax, eax
push esi
je 0x42200b
call fcn.005b44c3
add esp, 4
lea ecx, [esp + 0x10]
call fcn.0053df20
lea ecx, [esp + 0x10]
mov byte [esp + 0x87c], 7
call fcn.0053de40
mov eax, dword [esp + 0x14]
push eax
call fcn.005b44c3
mov ecx, dword [esp + 0x5c]
push ecx
call fcn.005b44c3
mov edx, dword [esp + 0x54]
push edx
call fcn.005b44c3
mov eax, dword [esp + 0x4c]
push eax
call fcn.005b44c3
mov ecx, dword [esp + 0x44]
push ecx
call fcn.005b44c3
mov edx, dword [esp + 0x3c]
push edx
call fcn.005b44c3
add esp, 0x18
jmp 0x422205
call fcn.005b44c3
add esp, 4
lea ecx, [esp + 0x10]
call fcn.0053df20
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push 0x409
mov esi, eax
push str.DEFLANG
push 0x6380c0
push esi
call dword [sym.imp.KERNEL32.dll_FindResourceExW]
mov edi, eax
push edi
push esi
call dword [sym.imp.KERNEL32.dll_LoadResource]
push edi
push esi
mov ebp, eax
call dword [sym.imp.KERNEL32.dll_SizeofResource]
mov esi, dword [esp + 0x20]
mov ebx, eax
push 0x642758
lea eax, [esi + 0x15c]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push ebx
push ebp
call dword [sym.imp.KERNEL32.dll_LockResource]
push eax
mov ecx, esi
call fcn.00422220
mov ecx, dword [esp + 0x14]
xor edi, edi
mov dword [esp + 0x1c], edi
push str.en_us.xml
mov word [ecx], di
lea ecx, [esp + 0x18]
call fcn.00401610
cmp dword [esp + 0x1c], edi
je 0x4220da
lea edx, [esp + 0x14]
lea ecx, [esp + 0x34]
push edx
mov dword [esp + 0x28], 1
call fcn.00405c40
mov eax, dword [esp + 0x40]
mov dword [esp + 0x48], edi
push 0x2e
lea ecx, [esp + 0x38]
mov word [eax], di
call fcn.004015e0
cmp eax, edi
jle 0x4220f4
lea ecx, [esp + 0x40]
inc eax
push ecx
push eax
lea ecx, [esp + 0x3c]
call fcn.00401350
jmp 0x4220f4
mov edx, dword [esp + 0x34]
mov dword [esp + 0x24], edi
mov dword [esp + 0x3c], edi
mov word [edx], di
mov eax, dword [esp + 0x40]
mov dword [esp + 0x48], edi
mov word [eax], di
lea ecx, [esp + 0x28]
push ecx
lea ecx, [esp + 0x5c]
call fcn.00405c40
push 0x3a
lea ecx, [esp + 0x5c]
call fcn.00405b40
lea edx, [esp + 0x4c]
lea ecx, [esp + 0x58]
push edx
call fcn.004018e0
push edi
push edi
lea ecx, [esp + 0x60]
call fcn.00405830
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
lea ecx, [esp + 0x64]
call fcn.0053de30
push 0x642750
push edi
lea ecx, [esp + 0x2c]
mov byte [esp + 0x884], 9
call fcn.00405900
mov ecx, eax
call fcn.00405830
push eax
lea ecx, [esp + 0x6c]
call fcn.0053de50
test eax, eax
je 0x4221c2
add esi, 0x55c
mov ecx, 0x100
xor eax, eax
mov edi, esi
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x24]
call fcn.00405900
mov eax, dword [eax + 8]
push 0
push 0
push 0x400
push esi
push eax
push 0
lea ecx, [esp + 0x3c]
call fcn.00405900
mov ecx, eax
call fcn.00405830
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
push ebx
push ebp
call dword [sym.imp.KERNEL32.dll_LockResource]
push eax
lea ecx, [esp + 0x6c]
call fcn.0053dff0
lea ecx, [esp + 0x64]
call fcn.0053df20
lea ecx, [esp + 0x64]
mov byte [esp + 0x87c], 8
call fcn.0053de40
lea ecx, [esp + 0x10]
mov byte [esp + 0x87c], 7
call fcn.0053de40
mov eax, dword [esp + 0x14]
push eax
call fcn.005b44c3
add esp, 4
lea ecx, [esp + 0x24]
mov dword [esp + 0x87c], 0xffffffff
call fcn.004012d0
mov ecx, dword [esp + 0x874]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x870
ret