Function at 0x412f09
Capabilities:
Accept command line arguments
Check for time delay via gettickcount
Identify system language via api

Disassembly:
mov eax, 0x431c50
call fcn.00430710
sub esp, 0x50
push ebx
push esi
push edi
mov edi, dword [sym.imp.KERNEL32.dll_GetTickCount]
mov esi, ecx
mov dword [ebp - 0x30], esi
call edi
push 0x5859ffff
push 0xe24dffff
mov byte [0x43ac7b], al
call fcn.0040b0f0
add dword [0x43ac9c], eax
xor ebx, ebx
movsx eax, byte [0x43ac80]
push eax
push 0x2807ffff
mov dword [ebp - 0x14], ebx
call fcn.0040af32
mov dword [0x43acb4], eax
mov eax, dword [esi + 0x28]
add esp, 0x10
lea edx, [ebp - 0x14]
mov ecx, dword [eax]
push edx
push eax
call dword [ecx + 0x48]
mov esi, eax
movsx eax, word [0x43ac90]
push eax
movsx eax, word [0x43ac88]
push eax
call fcn.0040af32
pop ecx
cmp esi, ebx
pop ecx
mov word [0x43ac86], ax
jl 0x413516
cmp dword [ebp - 0x14], ebx
je 0x413516
movsx ecx, word [0x43ac8c]
movsx eax, ax
push ecx
push eax
call fcn.0040af6d
mov esi, dword [sym.imp.USER32.dll_GetForegroundWindow]
pop ecx
pop ecx
mov byte [0x43ac7b], al
call esi
add word [0x43ac8e], ax
movsx eax, byte [0x43ac80]
push eax
movsx eax, word [0x43ac92]
push eax
call fcn.0040b0f0
pop ecx
mov dword [0x43acac], eax
pop ecx
mov dword [ebp - 0x1c], ebx
cmp dword [ebp - 0x14], ebx
mov dword [ebp - 4], ebx
je 0x413516
push str._D_3
lea eax, [ebp - 0x1c]
push dword [ebp - 0x14]
push eax
call fcn.00411212
add dword [0x43aca8], 0x3c980001
call esi
add dword [0x43aca8], eax
mov eax, dword [ebp - 0x14]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
movsx eax, byte [0x43ac79]
push eax
push 0x3d3ffff
call fcn.0040b087
push 0x8acfffff
mov byte [0x43ac7d], al
push dword [0x43acb4]
mov dword [ebp - 0x14], ebx
call fcn.0040afcb
add esp, 0x10
mov byte [0x43ac7f], al
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
mov dword [0x43ac98], eax
movsx ax, byte [0x43ac7f]
or ax, word [0x43ac8e]
cmp dword [ebp - 0x1c], ebx
mov word [0x43ac84], ax
je 0x413516
mov al, byte [ebp - 0xd]
mov dword [ebp - 0x48], ebx
mov byte [ebp - 0x4c], al
mov dword [ebp - 0x44], ebx
mov dword [ebp - 0x40], ebx
mov ecx, dword [ebp - 0x30]
push ebx
push dword [ebp - 0x1c]
lea eax, [ebp - 0x5c]
mov byte [ebp - 4], 1
push eax
call fcn.00413aee
push eax
lea ecx, [ebp - 0x4c]
mov byte [ebp - 4], 2
call fcn.00418ebe
lea ecx, [ebp - 0x5c]
mov byte [ebp - 4], 1
call fcn.00418c44
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x24], ebx
cmp eax, ebx
je 0x4130c9
mov ecx, dword [eax]
lea edx, [ebp - 0x24]
push edx
push 0x43a1e8
push eax
call dword [ecx]
push 0x8c1dffff
push 0x2d41ffff
mov byte [ebp - 4], 3
call fcn.0040b0ac
mov byte [0x43ac7e], al
xor eax, eax
cmp word [0x43ac84], bx
pop ecx
pop ecx
setne al
add dword [0x43aca4], eax
movsx ax, byte [0x43ac79]
and eax, dword [0x43aca8]
add word [0x43ac84], ax
mov eax, dword [ebp - 0x24]
cmp eax, ebx
je 0x41340d
mov dword [ebp - 0x20], ebx
mov ecx, dword [eax]
lea edx, [ebp - 0x20]
push edx
push 1
push eax
mov byte [ebp - 4], 4
call dword [ecx + 0x10]
cmp word [0x43ac8c], bx
mov esi, eax
je 0x413142
cmp dword [0x43acb8], ebx
mov byte [0x43ac7d], 1
jne 0x413148
mov byte [0x43ac7d], bl
push dword [0x43aca4]
push 0x8487ffff
call fcn.0040b0f0
add dword [0x43acb8], eax
pop ecx
cmp esi, ebx
pop ecx
jl 0x4133fc
movsx eax, word [0x43ac8e]
push eax
push eax
call fcn.0040b037
or byte [0x43ac81], 0xff
pop ecx
pop ecx
mov dword [0x43ac98], eax
call edi
mov byte [0x43ac7f], al
mov eax, dword [ebp - 0x20]
lea edx, [ebp - 0x38]
push edx
lea edx, [ebp - 0x2c]
mov ecx, dword [eax]
push edx
push 1
push eax
call dword [ecx + 0xc]
test eax, eax
jne 0x4133dd
push 0x92e9ffff
push dword [0x43acb8]
call fcn.0040b0ac
add word [0x43ac84], ax
mov eax, dword [ebp - 0x2c]
pop ecx
cmp eax, ebx
pop ecx
mov dword [ebp - 0x18], ebx
je 0x4131da
mov ecx, dword [eax]
lea edx, [ebp - 0x18]
push edx
push 0x43a1d8
push eax
call dword [ecx]
mov eax, dword [ebp - 0x2c]
mov ecx, dword [eax]
push eax
mov byte [ebp - 4], 5
call dword [ecx + 8]
movsx eax, word [0x43ac8e]
push dword [0x43ac98]
mov dword [0x43ac9c], 0x8011ffff
push eax
call fcn.0040b0ac
add dword [0x43acac], eax
mov eax, dword [ebp - 0x18]
pop ecx
cmp eax, ebx
pop ecx
je 0x4133bd
mov ecx, dword [eax]
lea edx, [ebp - 0x14]
push edx
push eax
call dword [ecx + 0x48]
mov esi, eax
movsx eax, word [0x43ac86]
push eax
push 0x62bdffff
call fcn.0040af6d
pop ecx
mov dword [0x43acbc], eax
mov al, byte [0x43ac86]
pop ecx
push eax
mov byte [0x43ac7c], 1
call dword [sym.imp.USER32.dll_IsCharAlphaA]
cmp esi, ebx
mov dword [0x43acb0], eax
jl 0x4133d4
cmp dword [ebp - 0x14], ebx
je 0x4133d4
mov eax, dword [0x43aca0]
push 0x4bedffff
imul eax, eax, 0x5f8fffff
mov dword [0x43aca4], eax
movsx eax, word [0x43ac92]
push eax
call fcn.0040b087
mov dword [0x43aca4], eax
movsx eax, byte [0x43ac78]
push eax
movsx eax, byte [0x43ac79]
push eax
call fcn.0040b0ac
add esp, 0x10
mov word [0x43ac82], ax
mov dword [ebp - 0x28], ebx
push dword [ebp - 0x14]
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 6
call fcn.00418c9a
push 0xfca1ffff
push dword [0x43aca4]
call fcn.0040af94
add word [0x43ac8c], ax
push 0x6f53ffff
push 0x9f5ffff
call fcn.0040af32
add dword [0x43ac9c], eax
mov eax, dword [ebp - 0x14]
add esp, 0x10
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
movsx eax, byte [0x43ac7a]
push eax
push 0x9a19ffff
mov word [0x43ac86], 0xfffe
call fcn.0040aeeb
pop ecx
mov dword [0x43acb0], eax
pop ecx
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
mov byte [0x43ac7c], al
mov dword [ebp - 0x14], ebx
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
mov dword [0x43aca8], eax
movsx eax, byte [0x43ac78]
push eax
movsx eax, byte [0x43ac7f]
push eax
call fcn.0040af32
pop ecx
mov byte [0x43ac7c], al
pop ecx
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
cmp dword [ebp - 0x28], ebx
mov byte [0x43ac78], al
je 0x4133d4
push 0x6d3dffff
call dword [sym.imp.KERNEL32.dll_IsValidCodePage]
push 0xf8e9ffff
push 0x2da3ffff
mov byte [0x43ac7d], al
call fcn.0040aeeb
add word [0x43ac8e], ax
pop ecx
pop ecx
lea eax, [ebp - 0x5c]
mov ecx, dword [ebp - 0x30]
push ebx
push dword [ebp - 0x28]
push eax
call fcn.00413aee
push eax
lea ecx, [ebp - 0x4c]
mov byte [ebp - 4], 7
call fcn.00418ebe
lea ecx, [ebp - 0x5c]
mov byte [ebp - 4], 6
call fcn.00418c44
mov eax, dword [ebp - 0x28]
mov byte [ebp - 4], 5
cmp eax, ebx
je 0x4133ba
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x18]
mov byte [ebp - 4], 4
cmp eax, ebx
je 0x41318b
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp 0x41318b
mov eax, dword [ebp - 0x18]
mov byte [ebp - 4], 4
jmp 0x4133c1
push 0x8bd5ffff
push 0xe801ffff
call fcn.0040af6d
add word [0x43ac86], ax
dec word [0x43ac84]
pop ecx
pop ecx
mov eax, dword [ebp - 0x20]
mov byte [ebp - 4], 3
cmp eax, ebx
je 0x41340d
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
xor edi, edi
call dword [sym.imp.KERNEL32.dll_GetVersion]
push dword [0x43ac98]
add word [0x43ac8e], ax
push 0xac25ffff
call fcn.0040af32
mov word [0x43ac94], ax
push 0x1e7ffff
movsx eax, word [0x43ac90]
push eax
call fcn.0040af32
add byte [0x43ac79], al
add esp, 0x10
xor eax, eax
cmp dword [0x43acbc], ebx
mov byte [0x43ac81], 1
setne al
mov word [0x43ac82], ax
mov eax, dword [ebp - 0x48]
cmp eax, dword [ebp - 0x44]
je 0x4134a6
lea esi, [eax + 4]
push 0x5497ffff
push 0xfaf1ffff
call fcn.0040b037
add dword [0x43aca8], eax
pop ecx
pop ecx
mov ecx, dword [esi]
cmp ecx, ebx
jne 0x413491
xor eax, eax
jmp 0x413499
mov eax, dword [esi + 4]
sub eax, ecx
sar eax, 2
add esi, 0x10
add edi, eax
lea eax, [esi - 4]
cmp eax, dword [ebp - 0x44]
jne 0x413470
push 0xaaa5ffff
push 0x963fffff
call fcn.0040b087
add word [0x43ac8a], ax
movsx eax, byte [0x43ac7f]
push eax
movsx eax, word [0x43ac82]
push eax
call fcn.0040afcb
add esp, 0x10
mov byte [0x43ac79], al
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
add dword [0x43aca4], eax
cmp edi, ebx
jne 0x413527
mov eax, dword [ebp - 0x24]
mov byte [ebp - 4], 1
cmp eax, ebx
je 0x4134fa
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea ecx, [ebp - 0x4c]
mov byte [ebp - 4], bl
call fcn.00418e8b
mov eax, dword [ebp - 0x1c]
or dword [ebp - 4], 0xffffffff
cmp eax, ebx
je 0x413516
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
xor al, al
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
leave
ret
mov al, byte [0x43ac82]
dec word [0x43ac8c]
mov byte [0x43ac7b], al
push 0x94bffff
movsx eax, word [0x43ac94]
push eax
call fcn.0040afcb
add dword [0x43acb0], eax
push 0xb09ffff
push 0xf209ffff
call fcn.0040b087
add esp, 0x10
mov word [0x43ac8c], ax
call dword [sym.imp.MSVCRT.dll_rand]
cdq
idiv edi
mov al, byte [0x43ac7c]
mov dword [ebp - 0x2c], ebx
mov byte [0x43ac7a], al
mov dword [ebp - 0x28], edx
call dword [sym.imp.USER32.dll_GetActiveWindow]
mov word [0x43ac86], ax
mov eax, dword [ebp - 0x48]
cmp eax, dword [ebp - 0x44]
mov dword [0x43acac], 0x77efffff
mov edi, eax
je 0x413a93
movsx eax, word [0x43ac92]
push eax
push dword [0x43ac9c]
call fcn.0040b0f0
mov byte [0x43ac7a], al
xor eax, eax
cmp byte [0x43ac79], bl
setne al
mov dword [0x43aca8], eax
movsx eax, byte [0x43ac81]
push eax
movsx eax, byte [0x43ac7d]
push eax
call fcn.0040b087
add word [0x43ac8e], ax
mov eax, dword [edi + 4]
add esp, 0x10
cmp eax, ebx
je 0x413941
mov ecx, dword [edi + 8]
sub ecx, eax
sar ecx, 2
cmp dword [ebp - 0x28], ecx
jae 0x413941
dec byte [0x43ac79]
push dword [0x43ac9c]
movsx eax, byte [0x43ac79]
push eax
call fcn.0040b0ac
add dword [0x43aca0], eax
cmp dword [ebp - 0x2c], ebx
pop ecx
pop ecx
je 0x41398a
push 0x75ffffff
call dword [sym.imp.KERNEL32.dll_IsValidCodePage]
mov word [0x43ac8e], ax
push 0xe02bffff
movsx eax, byte [0x43ac7f]
push eax
call fcn.0040af94
add word [0x43ac8e], ax
cmp dword [ebp - 0x24], ebx
pop ecx
pop ecx
je 0x413a68
mov dword [ebp - 0x18], ebx
push 0xa71bffff
push 0x50ebffff
mov byte [ebp - 4], 8
call fcn.0040b002
mov byte [0x43ac79], al
mov al, byte [0x43ac88]
pop ecx
shl al, 1
add byte [0x43ac7f], al
pop ecx
call dword [sym.imp.KERNEL32.dll_GetVersion]
add dword [0x43aca0], eax
mov eax, dword [ebp - 0x24]
lea edx, [ebp - 0x18]
mov ecx, dword [eax]
push edx
push 1
push eax
call dword [ecx + 0x10]
mov esi, eax
mov eax, dword [0x43acb4]
or eax, 0xede3ffff
push 0x1a15ffff
add dword [0x43aca0], eax
mov al, byte [0x43ac7a]
sub al, byte [0x43acb8]
push 0x2e71ffff
mov byte [0x43ac78], al
call fcn.0040aeeb
add dword [0x43acbc], eax
pop ecx
cmp esi, ebx
pop ecx
jl 0x413a57
movsx eax, word [0x43ac84]
mov edx, dword [ebp - 0x2c]
and eax, 0xe995ffff
add dword [0x43acac], eax
dec word [0x43ac88]
mov eax, dword [ebp - 0x18]
dec edx
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x10]
movsx eax, byte [0x43ac7e]
push 0x8bb7ffff
push eax
call fcn.0040b002
mov dword [0x43ac98], eax
pop ecx
movsx eax, byte [0x43ac7b]
or eax, dword [0x43ac9c]
pop ecx
lea edx, [ebp - 0x3c]
add dword [0x43ac9c], eax
mov eax, dword [0x43aca0]
dec eax
push edx
mov word [0x43ac84], ax
mov eax, dword [ebp - 0x18]
lea edx, [ebp - 0x38]
mov ecx, dword [eax]
push edx
push 1
push eax
call dword [ecx + 0xc]
test eax, eax
jne 0x413a57
push 0x2a51ffff
push 0x8a63ffff
mov byte [0x43ac80], bl
call fcn.0040b037
mov word [0x43ac8a], ax
mov eax, dword [ebp - 0x38]
pop ecx
cmp eax, ebx
pop ecx
mov dword [ebp - 0x20], ebx
je 0x41379f
mov ecx, dword [eax]
lea edx, [ebp - 0x20]
push edx
push 0x43a1d8
push eax
call dword [ecx]
mov eax, dword [ebp - 0x38]
mov ecx, dword [eax]
push eax
mov byte [ebp - 4], 9
call dword [ecx + 8]
movsx eax, byte [0x43ac7e]
push eax
push dword [0x43aca8]
call fcn.0040b0f0
movsx ecx, word [0x43ac90]
mov word [0x43ac88], ax
push ecx
movsx eax, ax
push eax
call fcn.0040af6d
add byte [0x43ac79], al
push 0xe29ffff
movsx eax, word [0x43ac92]
push eax
call fcn.0040af6d
add byte [0x43ac7b], al
add esp, 0x18
cmp dword [ebp - 0x20], ebx
je 0x413a57
movsx eax, word [0x43ac8e]
push dword [0x43acbc]
push eax
call fcn.0040af6d
add dword [0x43aca4], eax
movsx eax, byte [0x43ac7c]
sub eax, 0x33120001
mov dword [0x43acac], eax
movsx eax, word [0x43ac84]
push eax
push dword [0x43acb0]
call fcn.0040af6d
mov dword [0x43ac9c], eax
mov eax, dword [ebp - 0x20]
add esp, 0x10
lea edx, [ebp - 0x14]
mov ecx, dword [eax]
push edx
push eax
call dword [ecx + 0x48]
cmp eax, ebx
jl 0x41391d
cmp dword [ebp - 0x14], ebx
je 0x41391d
movsx eax, word [0x43ac88]
push eax
push dword [0x43acb0]
call fcn.0040b037
push 0x505bffff
push 0x7bc7ffff
mov dword [0x43acb4], eax
call fcn.0040aeeb
add dword [0x43acbc], eax
add esp, 0x10
mov dword [ebp - 0x34], ebx
push dword [ebp - 0x14]
lea ecx, [ebp - 0x34]
mov byte [ebp - 4], 0xa
call fcn.00418c9a
mov eax, dword [ebp - 0x14]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
movsx eax, word [0x43ac92]
push eax
push 0x3669ffff
call fcn.0040af94
mov esi, dword [sym.imp.USER32.dll_IsCharAlphaA]
pop ecx
pop ecx
mov dword [0x43aca4], eax
push 0xffffffffffffffff
call esi
push dword [0x43acbc]
mov byte [0x43ac7e], al
mov dword [ebp - 0x14], ebx
push dword [0x43aca0]
call fcn.0040b002
push 0xa485ffff
push 0x171fffff
mov dword [0x43aca4], eax
call fcn.0040b0ac
add esp, 0x10
mov word [0x43ac8c], ax
mov al, byte [0x43ac7a]
push eax
call esi
mov esi, dword [ebp - 0x34]
add byte [0x43ac7d], al
cmp esi, ebx
jne 0x4139e4
mov eax, dword [ebp - 0x20]
mov byte [ebp - 4], 8
cmp eax, ebx
je 0x41392e
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x18]
mov byte [ebp - 4], 3
cmp eax, ebx
je 0x413976
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp 0x413976
push 0xae4fffff
push 0xab8bffff
call fcn.0040b0ac
or word [0x43ac8e], 0xffff
pop ecx
pop ecx
mov word [0x43ac82], ax
mov ecx, dword [edi + 4]
cmp ecx, ebx
jne 0x41396b
xor eax, eax
jmp 0x413973
mov eax, dword [edi + 8]
sub eax, ecx
sar eax, 2
sub dword [ebp - 0x28], eax
add edi, 0x10
inc dword [ebp - 0x2c]
cmp edi, dword [ebp - 0x44]
jne 0x4135a5
jmp 0x413a93
movsx eax, byte [0x43ac79]
push eax
push 0xdce5ffff
call fcn.0040af6d
add word [0x43ac94], ax
mov esi, dword [ebp - 0x1c]
pop ecx
pop ecx
push dword [ebp - 0x28]
mov ecx, edi
call fcn.00418f28
push dword [eax]
mov ecx, dword [ebp - 0x30]
push esi
call fcn.00414dcf
push 0x1fb5ffff
call dword [sym.imp.KERNEL32.dll_IsValidCodePage]
add dword [0x43aca0], eax
xor eax, eax
cmp byte [0x43ac80], bl
setne al
add dword [0x43aca4], eax
jmp 0x413a93
push dword [ebp - 0x28]
mov ecx, edi
call fcn.00418f28
push dword [eax]
mov ecx, dword [ebp - 0x30]
push esi
call fcn.00414dcf
mov al, byte [0x43ac80]
add byte [0x43ac7c], al
call dword [sym.imp.USER32.dll_GetCursor]
add word [0x43ac94], ax
mov byte [ebp - 4], 9
movsx eax, word [0x43ac8c]
or eax, 0x6f3fffff
mov dword [0x43aca4], eax
mov eax, dword [ebp - 0x34]
cmp eax, ebx
je 0x413a33
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x20]
mov byte [ebp - 4], 8
cmp eax, ebx
je 0x413a44
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x18]
mov byte [ebp - 4], 3
cmp eax, ebx
je 0x413a93
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp 0x413a93
mov eax, dword [ebp - 0x18]
mov byte [ebp - 4], 3
cmp eax, ebx
je 0x413a68
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
or al, 0xff
sub al, byte [0x43ac90]
cmp byte [0x43ac81], bl
mov byte [0x43ac7a], al
jne 0x413a8a
cmp word [0x43ac8a], bx
jne 0x413a8a
xor eax, eax
jmp 0x413a8d
push 1
pop eax
add byte [0x43ac7c], al
push dword [0x43acac]
push 0xd58fffff
call fcn.0040aeeb
add dword [0x43acb4], eax
pop ecx
movsx ax, byte [0x43ac7a]
inc eax
pop ecx
mov word [0x43ac8c], ax
mov eax, dword [ebp - 0x24]
cmp eax, ebx
mov byte [ebp - 4], 1
je 0x413acb
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea ecx, [ebp - 0x4c]
mov byte [ebp - 4], bl
call fcn.00418e8b
mov eax, dword [ebp - 0x1c]
or dword [ebp - 4], 0xffffffff
cmp eax, ebx
je 0x413ae7
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov al, 1
jmp 0x413518