Function at 0x42117c
Capabilities:
Accept command line arguments
Identify system language via api

Disassembly:
push ebp
mov ebp, esp
push ecx
movsx eax, word [0x43ac88]
push ebx
push esi
push edi
push eax
push 0x1445ffff
call fcn.0040af32
mov word [0x43ac82], ax
push 0x3d25ffff
movsx eax, byte [0x43ac7e]
push eax
call fcn.0040b0f0
push dword [0x43aca0]
mov dword [0x43acb4], eax
push 0xfa2bffff
call fcn.0040b037
mov esi, dword [ebp + 0x18]
add word [0x43ac88], ax
xor edi, edi
add esp, 0x18
mov eax, dword [esi]
cmp eax, edi
je 0x4211df
push eax
call dword [sym.imp.MSVCRT.dll_free]
pop ecx
movsx eax, word [0x43ac82]
push dword [0x43acb0]
push eax
call fcn.0040b0f0
mov ebx, dword [sym.imp.USER32.dll_GetForegroundWindow]
pop ecx
pop ecx
mov dword [0x43acac], eax
call ebx
push dword [0x43ac9c]
mov word [0x43ac8a], ax
movsx eax, word [0x43ac8c]
push eax
call fcn.0040af32
cmp dword [ebp + 0x20], edi
pop ecx
pop ecx
mov ecx, eax
mov dword [0x43aca0], ecx
jne 0x421339
mov al, byte [0x43ac8c]
mov edi, dword [ebp + 0x14]
imul cl
add byte [0x43ac7b], al
push edi
movsx eax, word [0x43ac82]
imul eax, eax, 0x9153ffff
mov dword [0x43acb4], eax
movsx ax, byte [0x43ac80]
neg eax
mov word [0x43ac8e], ax
call dword [sym.imp.MSVCRT.dll_malloc]
mov dword [esi], eax
mov al, byte [0x43ac7d]
pop ecx
push eax
call dword [sym.imp.USER32.dll_IsCharAlphaA]
mov byte [0x43ac79], al
cmp dword [esi], 0
je 0x421966
movsx eax, byte [0x43ac7b]
imul eax, eax, 0xf25fffff
push 0x2ad7ffff
mov dword [0x43acb0], eax
push dword [0x43aca8]
call fcn.0040b087
add dword [0x43aca8], eax
push 0xbe5fffff
push 0x3edfffff
call fcn.0040b087
mov dword [0x43aca8], eax
mov eax, dword [ebp + 0x1c]
mov dword [eax], edi
movsx eax, byte [0x43ac7b]
push eax
push 0xe63dffff
call fcn.0040afcb
add byte [0x43ac7c], al
movsx eax, byte [0x43ac78]
push eax
push 0x9787ffff
call fcn.0040b002
push edi
mov dword [0x43aca0], eax
push dword [ebp + 8]
push dword [esi]
call sub.MSVCRT.dll_memcpy
push 0xdd1bffff
push 0x583ffff
call fcn.0040b002
push dword [0x43acac]
add word [0x43ac94], ax
push 0x9ffffff
call fcn.0040b037
add esp, 0x3c
mov word [0x43ac8c], ax
call ebx
mov byte [0x43ac79], al
jmp 0x421a34
movsx eax, byte [0x43ac7a]
push 0x8b97ffff
push eax
call fcn.0040b002
add word [0x43ac8c], ax
push 0x7583ffff
push 0xefe9ffff
call fcn.0040af94
add dword [0x43ac9c], eax
mov al, byte [0x43acbc]
or al, byte [0x43ac7d]
add esp, 0x10
cmp dword [ebp + 8], edi
mov byte [0x43ac7c], al
jne 0x4214ea
push dword [0x43aca8]
push 0x9199ffff
call fcn.0040b0f0
add byte [0x43ac7c], al
push 0x9989ffff
movsx eax, byte [0x43ac7b]
push eax
call fcn.0040b002
add esp, 0x10
mov dword [0x43acb0], eax
test byte [ebp + 0x20], 1
je 0x421478
movsx eax, byte [0x43ac7e]
push eax
push 0x6c1ffff
call fcn.0040af32
add dword [0x43aca4], eax
mov al, byte [0x43ac92]
push dword [ebp + 0xc]
sub byte [0x43ac7b], al
call sub.MSVCRT.dll_strlen
push dword [ebp + 0x10]
mov edi, eax
call sub.MSVCRT.dll_strlen
add esp, 0x10
lea edi, [edi + eax + 3]
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
push dword [0x43aca8]
movzx eax, ax
push 0x7c9ffff
mov dword [0x43ac9c], eax
call fcn.0040b087
push edi
mov word [0x43ac8e], ax
call dword [sym.imp.MSVCRT.dll_malloc]
push dword [ebp + 0xc]
mov dword [esi], eax
push eax
call sub.MSVCRT.dll_strcpy
push dword [ebp + 0x10]
push dword [esi]
call sub.MSVCRT.dll_strcat
mov edi, dword [0x4351fc]
add esp, 0x1c
mov al, byte [edi]
add al, 0x76
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.00430730
mov eax, esp
push edi
push eax
call fcn.0042d836
push eax
push dword [esi]
call sub.MSVCRT.dll_strcat
add esp, 0x10
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
add dword [0x43acbc], eax
jmp 0x421a2e
call dword [sym.imp.USER32.dll_GetActiveWindow]
add word [0x43ac8a], ax
push 0x21e1ffff
push 0xea19ffff
mov dword [esi], edi
call fcn.0040af32
push 0x5c15ffff
push 0xa203ffff
mov byte [0x43ac7b], al
call fcn.0040afcb
push 0x129bffff
mov word [0x43ac90], ax
push dword [0x43acac]
call fcn.0040aeeb
add dword [0x43aca4], eax
mov eax, dword [ebp + 0x1c]
or dword [eax], 0xffffffff
push dword [0x43acb0]
push 0xb10dffff
call fcn.0040b002
add esp, 0x20
mov word [0x43ac8e], ax
jmp 0x421a34
mov eax, dword [ebp + 0x14]
cmp eax, 0xffffffff
jne 0x4214fb
push dword [ebp + 8]
call sub.MSVCRT.dll_strlen
pop ecx
mov dword [ebp + 0x18], eax
push 0xdc9ffff
movsx eax, word [0x43ac8e]
push eax
call fcn.0040afcb
push dword [0x43aca4]
mov byte [0x43ac7d], al
push 0xe3b1ffff
call fcn.0040aeeb
mov word [0x43ac92], ax
push 0x13b3ffff
movsx eax, word [0x43ac88]
push eax
call fcn.0040b0ac
add byte [0x43ac7a], al
mov eax, dword [ebp + 0x20]
add esp, 0x18
and eax, 8
mov dword [ebp - 4], eax
je 0x421559
mov eax, dword [ebp + 0x18]
lea ebx, [eax + 1]
jmp 0x421576
push dword [ebp + 0xc]
call sub.MSVCRT.dll_strlen
push dword [ebp + 0x10]
mov ebx, eax
call sub.MSVCRT.dll_strlen
pop ecx
pop ecx
mov ecx, dword [ebp + 0x18]
add ecx, ebx
lea ebx, [eax + ecx + 3]
call dword [sym.imp.USER32.dll_GetForegroundWindow]
mov cx, word [0x43ac8a]
push ebx
dec cx
add ax, cx
mov word [0x43ac86], ax
call dword [sym.imp.MSVCRT.dll_malloc]
test eax, eax
pop ecx
mov dword [esi], eax
je 0x421966
movsx eax, byte [0x43ac7e]
and eax, dword [0x43acbc]
and byte [ebp + 0x17], 0
mov word [0x43ac8a], 1
push 0x5171ffff
mov dword [0x43acb4], eax
movsx eax, word [0x43ac90]
or eax, dword [0x43aca0]
add dword [0x43aca8], eax
mov eax, dword [esi]
and byte [eax], 0
push dword [0x43acb8]
call fcn.0040b0f0
add word [0x43ac94], ax
pop ecx
test byte [ebp + 0x20], 0xe
pop ecx
je 0x4218b9
movsx eax, byte [0x43ac80]
push eax
push dword [0x43ac9c]
call fcn.0040b037
add word [0x43ac92], ax
cmp dword [ebp + 0x18], 0
pop ecx
pop ecx
jbe 0x4218b9
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
add byte [0x43ac7d], al
mov ax, word [0x43aca0]
or ax, word [0x43ac94]
push 0xc151ffff
push dword [0x43ac9c]
add word [0x43ac8e], ax
call fcn.0040b037
push dword [ebp + 0xc]
mov word [0x43ac8e], ax
call sub.MSVCRT.dll_strlen
mov ebx, dword [ebp + 8]
push eax
push dword [ebp + 0xc]
lea eax, [edi + ebx]
push eax
call dword [sym.imp.MSVCRT.dll__strnicmp]
add esp, 0x18
test eax, eax
je 0x4216ff
dec word [0x43ac8a]
or ax, 0xffff
sub ax, word [0x43ac88]
mov word [0x43ac94], ax
cmp edi, dword [ebp + 0x18]
jae 0x4216a5
mov al, byte [edi + ebx]
cmp al, 0xa
je 0x4216a5
cmp al, 0xd
je 0x4216a5
inc edi
jmp 0x421692
movsx eax, byte [0x43ac81]
push 0xda8bffff
push eax
call fcn.0040b0ac
mov byte [0x43ac7e], al
push 0x9a8dffff
movsx eax, word [0x43ac88]
push eax
call fcn.0040aeeb
add dword [0x43ac98], eax
add esp, 0x10
cmp edi, dword [ebp + 0x18]
jae 0x4218bc
mov al, byte [edi + ebx]
cmp al, 0xa
je 0x4216eb
cmp al, 0xd
jne 0x4216f1
inc edi
cmp edi, dword [ebp + 0x18]
jb 0x4216e0
cmp edi, dword [ebp + 0x18]
jb 0x421620
jmp 0x4218bc
push edi
push ebx
push dword [esi]
call dword [sym.imp.MSVCRT.dll_strncpy]
mov eax, dword [esi]
and byte [eax + edi], 0
movsx eax, word [0x43ac90]
push eax
movsx eax, byte [0x43ac81]
push eax
call fcn.0040b002
push 0xf2d1ffff
push 0x4679ffff
mov byte [0x43ac81], al
call fcn.0040af32
add esp, 0x1c
mov dword [0x43aca8], eax
push 0xcf8fffff
call dword [sym.imp.KERNEL32.dll_IsValidCodePage]
push dword [ebp + 0xc]
add dword [0x43aca0], eax
call sub.MSVCRT.dll_strlen
add edi, eax
cmp byte [0x43ac7d], 0
setne al
mov byte [0x43ac7e], al
movsx eax, byte [0x43ac7a]
push eax
push dword [0x43acac]
call fcn.0040afcb
xor eax, eax
add esp, 0xc
cmp word [0x43ac86], ax
setne al
test byte [ebp + 0x20], 0xa
mov word [0x43ac82], ax
je 0x421812
test byte [ebp + 0x20], 2
je 0x4217b5
push dword [ebp + 0xc]
push dword [esi]
call sub.MSVCRT.dll_strcat
push dword [ebp + 0x10]
push dword [esi]
call sub.MSVCRT.dll_strcat
add esp, 0x10
push 0x3de5ffff
push 0xcb0dffff
call fcn.0040b0f0
add dword [0x43acac], eax
or word [0x43ac84], 0xffff
sub dword [0x43ac98], 0x40480001
pop ecx
pop ecx
cmp edi, dword [ebp + 0x18]
jae 0x4217f1
mov al, byte [edi + ebx]
cmp al, 0xa
je 0x4217f1
cmp al, 0xd
je 0x4217f1
inc edi
jmp 0x4217de
push 0xffffffffffffffff
call dword [sym.imp.USER32.dll_IsCharAlphaA]
mov word [0x43ac8a], ax
xor eax, eax
cmp byte [0x43ac7c], al
setne al
mov word [0x43ac92], ax
jmp 0x421866
test byte [ebp + 0x20], 4
je 0x421866
push dword [ebp + 0x10]
push dword [esi]
call sub.MSVCRT.dll_strcat
movsx eax, byte [0x43ac7d]
mov ecx, dword [0x43aca8]
or eax, 0xe0afffff
mov dword [0x43acb0], eax
push 0x6a2bffff
movsx eax, word [0x43ac92]
lea eax, [ecx + eax - 0x21d40001]
mov dword [0x43aca8], eax
movsx eax, word [0x43ac82]
push eax
call fcn.0040b0ac
add esp, 0x10
mov byte [0x43ac7b], al
movsx eax, byte [0x43ac7a]
push 0x8a5bffff
push eax
call fcn.0040af32
pop ecx
mov word [0x43ac92], ax
pop ecx
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
mov dword [0x43acb8], eax
movsx eax, word [0x43ac88]
push eax
movsx eax, byte [0x43ac79]
push eax
call fcn.0040b002
add edi, ebx
mov word [0x43ac86], ax
push edi
push dword [esi]
call sub.MSVCRT.dll_strcat
add esp, 0x10
mov byte [ebp + 0x17], 1
jmp 0x4218bc
mov ebx, dword [ebp + 8]
xor edi, edi
xor eax, eax
cmp dword [0x43aca0], edi
setne al
add byte [0x43ac78], al
cmp dword [ebp - 4], edi
je 0x42196d
cmp byte [ebp + 0x17], 0
jne 0x42196d
push dword [esi]
call dword [sym.imp.MSVCRT.dll_free]
mov dword [esp], 0x6d8bffff
push 0xbf07ffff
call fcn.0040b0ac
add word [0x43ac82], ax
movsx eax, word [0x43ac88]
push eax
push 0x66d5ffff
call fcn.0040b087
add byte [0x43ac81], al
mov dword [esi], edi
movsx eax, byte [0x43ac79]
push 0x8975ffff
push eax
call fcn.0040b0ac
mov byte [0x43ac81], al
push 0x6b9dffff
movsx eax, byte [0x43ac7c]
push eax
call fcn.0040b087
add byte [0x43ac79], al
movsx eax, word [0x43ac8c]
push eax
push 0x8ce3ffff
call fcn.0040afcb
add esp, 0x28
mov word [0x43ac92], ax
xor eax, eax
jmp 0x421a37
cmp word [0x43ac82], di
jne 0x421983
cmp word [0x43ac94], di
jne 0x421983
xor eax, eax
jmp 0x421986
push 1
pop eax
add byte [0x43ac7a], al
movsx eax, word [0x43ac94]
push eax
movsx eax, word [0x43ac88]
push eax
call fcn.0040b0ac
add byte [0x43ac7c], al
movsx eax, word [0x43ac90]
push eax
push 0x662dffff
call fcn.0040b037
add byte [0x43ac7a], al
add esp, 0x10
test byte [ebp + 0x20], 1
je 0x421a18
cmp byte [ebp + 0x17], 0
jne 0x421a18
push dword [ebp + 0xc]
push dword [esi]
call sub.MSVCRT.dll_strcpy
push dword [ebp + 0x10]
push dword [esi]
call sub.MSVCRT.dll_strcat
mov edi, dword [0x4351fc]
add esp, 0x10
mov al, byte [edi]
add al, 0x76
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.00430730
mov eax, esp
push edi
push eax
call fcn.0042d836
push eax
push dword [esi]
call sub.MSVCRT.dll_strcat
push ebx
push dword [esi]
call sub.MSVCRT.dll_strcat
add esp, 0x18
push 0xb22fffff
push 0x5355ffff
call fcn.0040b002
pop ecx
mov byte [0x43ac7d], al
pop ecx
mov eax, dword [ebp + 0x1c]
or dword [eax], 0xffffffff
push 1
pop eax
lea esp, [ebp - 0x10]
pop edi
pop esi
pop ebx
leave
ret