Function at 0x100167f0
Capabilities:
Accept command line arguments

Disassembly:
push 0xffffffffffffffff
push 0x1003ebd1
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x24
push ebx
push ebp
push esi
xor esi, esi
push edi
mov dword [esp + 0x10], esi
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
mov byte [0x10047ba6], al
mov eax, dword [0x10047be0]
push eax
push 0xa31ffff
call fcn.100076b0
mov ecx, dword [0x10047bdc]
add esp, 8
add ecx, eax
mov al, byte [esp + 0x50]
test al, al
mov dword [0x10047bdc], ecx
je 0x10016c21
mov dl, byte [0x10047ba0]
push 0x74cbffff
dec dl
push 0x1449ffff
mov byte [0x10047ba0], dl
call fcn.100078b0
mov bl, byte [0x10047ba4]
add esp, 8
lea ecx, [esp + 0x44]
lea edx, [esp + 0x50]
add bl, al
push ecx
push edx
mov ecx, 0x10048080
mov byte [0x10047ba4], bl
call fcn.10019800
mov eax, dword [0x10047bd4]
push 0x29e5ffff
push eax
call fcn.10007830
movsx ecx, byte [0x10047ba6]
add word [0x10047bb4], ax
push ecx
push 0x565bffff
call fcn.100076b0
add word [0x10047bb0], ax
movsx edx, word [0x10047bac]
movsx eax, word [0x10047bb8]
push edx
push eax
call fcn.10007880
mov ecx, dword [esp + 0x68]
mov byte [0x10047ba9], al
mov eax, dword [0x10048084]
add esp, 0x18
cmp ecx, eax
je 0x10016bda
mov cl, byte [0x10047ba5]
mov edx, dword [0x10047bd4]
dec cl
push edx
push 0x946fffff
mov byte [0x10047ba2], cl
call fcn.100077d0
mov esi, dword [0x10047be4]
mov dl, byte [0x10047ba3]
mov ebp, dword [esp + 0x58]
add esp, 8
add esi, eax
dec dl
mov dword [0x10047be4], esi
mov byte [0x10047ba3], dl
mov eax, dword [ebp + 0x38]
test eax, eax
jbe 0x10016bda
mov ebx, dword [esp + 0x4c]
cmp eax, ebx
jae 0x10016b17
dec byte [0x10047ba9]
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
movsx ecx, byte [0x10047ba5]
mov word [0x10047baa], ax
mov eax, dword [esp + 0x50]
push 0x9a37ffff
push ecx
mov esi, dword [eax + 0x38]
mov dword [esp + 0x18], esi
call fcn.10007830
mov edx, dword [esp + 0x58]
add word [0x10047bac], ax
add esp, 8
mov eax, dword [edx + 0x34]
lea ebp, [edx + 0x30]
test eax, eax
jne 0x1001698f
mov eax, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
mov edi, dword [esp + 0x48]
mov ecx, esi
mov esi, eax
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
push 1
rep movsb byte es:[edi], byte [esi]
mov cx, word [0x10047bae]
mov edi, 0x10047afc
neg cx
mov word [0x10047bac], cx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov ebx, ecx
mov ecx, ebp
push ebx
call dword [sym.imp.MSVCP60.dll_private:_bool___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Grow_unsigned_int__bool_]
test al, al
je 0x100169f7
mov edi, dword [ebp + 4]
mov ecx, ebx
mov edx, ecx
mov esi, 0x10047afc
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
push ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, ebp
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Eos_unsigned_int_]
mov al, byte [esp + 0x50]
xor esi, esi
push esi
lea ecx, [esp + 0x18]
mov byte [esp + 0x18], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov ecx, dword [esp + 0x50]
mov edx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
mov dword [esp + 0x3c], esi
lea eax, [ecx + 0x10]
mov ecx, dword [edx]
push ecx
push esi
push eax
lea ecx, [esp + 0x20]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
mov dl, byte [0x10047ba2]
mov al, byte [0x10047ba9]
movsx ecx, byte [0x10047ba0]
dec dl
add al, dl
mov byte [0x10047ba9], al
mov eax, dword [0x10047bd4]
push eax
push ecx
call fcn.10007880
mov cl, byte [0x10047ba2]
add esp, 8
add cl, al
mov byte [0x10047ba2], cl
lea ecx, [esp + 0x50]
call fcn.100181d0
sub esp, 0x10
add eax, 0x14
mov ecx, esp
mov dword [esp + 0x58], esp
push eax
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const__]
lea edx, [esp + 0x34]
push edx
call fcn.10011f10
add esp, 0x14
push eax
mov ecx, 0x100480a0
mov byte [esp + 0x40], 1
call fcn.10017fc0
lea ecx, [esp + 0x14]
push ecx
mov ecx, eax
call fcn.10019300
mov eax, dword [esp + 0x28]
cmp eax, esi
je 0x10016ace
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x10016ac5
cmp al, 0xff
je 0x10016ac5
dec al
mov byte [ecx], al
jmp 0x10016ace
push ecx
call fcn.1002cda0
add esp, 4
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x28], esi
cmp ecx, esi
mov dword [esp + 0x2c], esi
mov dword [esp + 0x30], esi
mov dword [esp + 0x3c], 0xffffffff
je 0x10016b06
mov al, byte [ecx - 1]
test al, al
je 0x10016afc
cmp al, 0xff
je 0x10016afc
dec al
mov byte [ecx - 1], al
jmp 0x10016b06
dec ecx
push ecx
call fcn.1002cda0
add esp, 4
mov dword [esp + 0x18], esi
mov dword [esp + 0x1c], esi
mov dword [esp + 0x20], esi
jmp 0x10016bda
mov eax, dword [ebp + 0x34]
add ebp, 0x30
test eax, eax
mov dword [esp + 0x10], ebx
jne 0x10016b2a
mov eax, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
mov edi, dword [esp + 0x48]
mov ecx, ebx
mov edx, ecx
mov esi, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [ebp + 4]
test esi, esi
je 0x10016b9b
mov al, byte [esi - 1]
test al, al
je 0x10016b9b
cmp al, 0xff
je 0x10016b9b
push 1
mov ecx, ebp
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov edi, esi
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x4c], ecx
push ecx
mov ecx, ebp
call dword [sym.imp.MSVCP60.dll_private:_bool___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Grow_unsigned_int__bool_]
test al, al
je 0x10016b9b
mov ecx, dword [esp + 0x48]
mov edi, dword [ebp + 4]
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, eax
push ecx
mov ecx, ebp
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Eos_unsigned_int_]
mov eax, dword [ebp + 8]
cmp eax, ebx
jae 0x10016ba4
mov ebx, eax
test ebx, ebx
jbe 0x10016bda
mov ecx, dword [ebp + 4]
sub eax, ebx
push eax
lea edx, [ecx + ebx]
push edx
push ecx
call dword [sym.imp.MSVCRT.dll_memmove]
mov esi, dword [ebp + 8]
add esp, 0xc
sub esi, ebx
mov ecx, ebp
push 0
push esi
call dword [sym.imp.MSVCP60.dll_private:_bool___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Grow_unsigned_int__bool_]
test al, al
je 0x10016bda
mov eax, dword [ebp + 4]
mov dword [ebp + 8], esi
mov byte [esi + eax], 0
mov cx, word [0x10047bb8]
push 0x368fffff
dec cx
push 0x31cfffff
mov word [0x10047bba], cx
call fcn.100075f0
mov ecx, dword [0x10047bd0]
add esp, 8
add ecx, eax
mov eax, dword [esp + 0x10]
mov dword [0x10047bd0], ecx
mov ecx, dword [esp + 0x34]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x30
ret
mov ecx, dword [esp + 0x34]
mov eax, esi
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x30
ret