Function at 0x40d230
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x41b8ca
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xcbc
movsx eax, byte [0x422afa]
movsx ecx, word [0x422b12]
or eax, ecx
push ebx
mov dword [0x422b34], eax
mov ax, word [0x422b08]
movsx ecx, word [0x422b02]
push esi
mov dx, ax
xor esi, esi
dec dx
mov word [0x422b06], dx
push edi
movsx edx, ax
imul ecx, edx
lea eax, [ebp - 0x88]
mov dword [ebp - 0x34], esi
push eax
mov dword [0x422b20], ecx
mov byte [0x422aff], 0xfe
call fcn.0040dfe0
mov ecx, dword [0x422b24]
mov edx, dword [0x422b30]
and ecx, edx
add esp, 4
mov word [0x422b0c], 0xffff
mov word [0x422b02], cx
mov byte [ebp - 0xcc8], 0
mov byte [ebp - 0x8c8], 0
mov byte [ebp - 0x4c8], 0
mov edx, dword [0x422b2c]
lea ecx, [ebp - 0xcc8]
add edx, 0xeb0bffff
mov dword [ebp - 4], esi
mov dword [0x422b30], edx
call fcn.0040bf60
mov al, byte [0x422b20]
mov cl, byte [0x422afe]
mov ebx, dword [0x422b34]
or al, cl
xor ecx, ecx
cmp ebx, esi
setne cl
mov word [0x422b06], cx
mov ecx, dword [0x422b18]
mov byte [0x422afb], al
mov eax, ecx
neg eax
shl eax, 5
sub eax, ecx
push esi
lea eax, [eax + eax*2]
shl eax, 3
sub eax, ecx
lea edx, [eax + eax*4]
mov al, byte [ebp + 0xb]
shl edx, 0x11
sub edx, ecx
lea ecx, [ebp - 0x48]
mov dword [0x422b20], edx
mov byte [ebp - 0x48], 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_]
lea edi, [ebp - 0xcc8]
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov ebx, ecx
lea ecx, [ebp - 0x48]
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 0x40d399
mov edi, dword [ebp - 0x44]
mov ecx, ebx
mov edx, ecx
lea esi, [ebp - 0xcc8]
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]
lea ecx, [ebp - 0x48]
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_]
lea edi, [ebp - 0x8c8]
or ecx, 0xffffffff
xor eax, eax
mov byte [ebp - 4], 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [ebp - 0x8c8]
push ecx
push eax
lea ecx, [ebp - 0x48]
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__::append_char_const___unsigned_int_]
lea edi, [ebp - 0x4c8]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
lea ecx, [ebp - 0x4c8]
push ecx
lea ecx, [ebp - 0x48]
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__::append_char_const___unsigned_int_]
movsx eax, word [0x422b0a]
mov ecx, dword [0x422b18]
mov dl, byte [0x422b30]
sub ecx, eax
mov al, byte [0x422764]
add al, 0x62
dec dl
and eax, 0xff
mov byte [0x422aff], dl
add eax, 3
mov dword [0x422b18], ecx
and al, 0xfc
call fcn.0041a770
mov ecx, esp
mov edx, 0x422764
call fcn.004196b0
mov cl, byte [ebp + 0xb]
push 0
mov byte [ebp - 0x20], cl
lea ecx, [ebp - 0x20]
mov esi, eax
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 ebx, ecx
lea ecx, [ebp - 0x20]
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 0x40d472
mov edi, dword [ebp - 0x1c]
mov ecx, ebx
mov edx, ecx
push ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [ebp - 0x20]
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 ecx, dword [ebp - 0x74]
mov ax, word [0x422b02]
lea edx, [ebp - 0x70]
push ecx
push edx
mov byte [ebp - 4], 2
mov byte [0x422afc], 1
mov dword [0x422b34], 0x4115ffff
mov word [0x422b0c], ax
call fcn.004035b0
mov esi, eax
mov eax, dword [ebp - 0x78]
lea ecx, [ebp - 0xc8]
push eax
push ecx
mov byte [ebp - 4], 3
call fcn.004035b0
mov edi, eax
mov edx, dword [ebp - 0x7c]
lea eax, [ebp - 0xb8]
push edx
push eax
mov byte [ebp - 4], 4
call fcn.004035b0
push edi
lea ecx, [ebp - 0x98]
push eax
push ecx
mov byte [ebp - 4], 5
call sub.MSVCP60.dll_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char_____cdecl_std::operator_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const__
push esi
lea edx, [ebp - 0xa8]
mov bl, 6
push eax
push edx
mov byte [ebp - 4], bl
call sub.MSVCP60.dll_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char_____cdecl_std::operator_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const__
add esp, 0x30
mov ecx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
mov byte [ebp - 4], 7
mov edx, dword [ecx]
lea ecx, [ebp - 0x20]
push edx
push 0
push eax
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__::append_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
push 1
lea ecx, [ebp - 0xa8]
mov byte [ebp - 4], bl
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [ebp - 0x98]
mov byte [ebp - 4], 5
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [ebp - 0xb8]
mov byte [ebp - 4], 4
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [ebp - 0xc8]
mov byte [ebp - 4], 3
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [ebp - 0x70]
mov byte [ebp - 4], 2
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 ax, word [0x422b1c]
movsx cx, byte [0x422af9]
mov word [0x422b04], ax
mov al, byte [0x42275c]
add al, 0x62
dec ecx
and eax, 0xff
mov word [0x422b06], cx
add eax, 3
and al, 0xfc
call fcn.0041a770
mov ecx, esp
mov edx, 0x42275c
call fcn.004196b0
mov edx, eax
or ecx, 0xffffffff
mov edi, edx
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push edx
lea ecx, [ebp - 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__::append_char_const___unsigned_int_]
mov eax, dword [ebp - 0x44]
test eax, eax
jne 0x40d5c6
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]
push eax
call fcn.0040f5d0
mov edx, eax
or ecx, 0xffffffff
mov edi, edx
xor eax, eax
add esp, 4
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push edx
lea ecx, [ebp - 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__::append_char_const___unsigned_int_]
movsx edx, byte [0x422afe]
lea eax, [ebp - 0x60]
xor edi, edi
or edx, 0xdea9ffff
push eax
mov dword [ebp - 0x38], edi
xor bl, bl
mov dword [0x422b24], 0x1711ffff
mov byte [0x422afc], 0xfe
mov dword [0x422b2c], edx
call fcn.0040eae0
add esp, 4
mov eax, dword [ebp - 0x58]
mov byte [ebp - 4], 8
cmp eax, edi
jbe 0x40d6ea
mov eax, dword [ebp - 0x5c]
mov byte [0x422afd], 1
cmp eax, edi
jne 0x40d641
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]
push edi
push edi
push 3
push edi
push 1
push SysReAllocString
push eax
call dword [sym.imp.KERNEL32.DLL_CreateFileA]
movsx ecx, byte [0x422afa]
sub ecx, 0x357bffff
or dl, 0xff
mov dword [0x422b38], ecx
mov cl, byte [0x422afc]
mov esi, eax
sub dl, cl
cmp esi, 0xffffffff
mov byte [0x422afb], 0xff
mov byte [0x422af8], dl
je 0x40d6ea
push 2
push edi
push 0xfffffffffffffffc
push esi
call dword [sym.imp.KERNEL32.DLL_SetFilePointer]
cmp eax, 0xffffffff
je 0x40d6ea
movsx eax, word [0x422b06]
mov ecx, dword [0x422b18]
or eax, 0x25adffff
movsx dx, byte [0x422afd]
mov dword [0x422b28], eax
and ecx, 0xe001ffff
lea eax, [ebp - 0x10]
mov dword [0x422b38], ecx
push edi
push eax
lea ecx, [ebp - 0x38]
push 4
push ecx
push esi
mov word [0x422b04], dx
mov dword [ebp - 0x10], edi
call dword [sym.imp.KERNEL32.DLL_ReadFile]
test eax, eax
je 0x40d6ea
cmp dword [ebp - 0x10], 4
jne 0x40d6ea
mov bl, 1
mov eax, dword [0x422b24]
cmp eax, edi
je 0x40d707
mov ecx, dword [0x422b28]
mov dword [0x422b18], 1
cmp ecx, edi
jne 0x40d70d
mov dword [0x422b18], edi
test bl, bl
je 0x40d7e0
mov al, byte [0x422750]
add al, 0x62
and eax, 0xff
add eax, 3
and al, 0xfc
call fcn.0041a770
mov ecx, esp
mov edx, 0x422750
call fcn.004196b0
mov ebx, eax
or ecx, 0xffffffff
mov edi, ebx
xor eax, eax
mov edx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
repne scasb al, byte es:[edi]
mov eax, dword [edx]
mov edx, dword [ebp - 0x18]
not ecx
dec ecx
sub eax, edx
mov esi, ecx
cmp eax, esi
ja 0x40d75e
call dword [sym.imp.MSVCP60.dll_void___cdecl_std::_Xlen_void_]
test esi, esi
jbe 0x40d7a3
mov ecx, dword [ebp - 0x18]
push 0
lea eax, [ecx + esi]
lea ecx, [ebp - 0x20]
push eax
mov dword [ebp - 0x10], eax
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 0x40d7a3
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x18]
mov ecx, esi
mov esi, ebx
lea edi, [eax + edx]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp - 0x10]
mov ecx, edx
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [ebp - 0x20]
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 ecx, dword [ebp - 0x38]
lea edx, [ebp - 0x70]
push ecx
push edx
call fcn.004035b0
add esp, 8
mov ecx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
mov byte [ebp - 4], 9
mov edx, dword [ecx]
lea ecx, [ebp - 0x20]
push edx
push 0
push eax
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__::append_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
push 1
lea ecx, [ebp - 0x70]
mov byte [ebp - 4], 8
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
jmp 0x40d893
cmp eax, edi
mov word [0x422b10], 0xffff
je 0x40d800
cmp word [0x422b08], di
mov dword [0x422b18], 1
jne 0x40d806
mov dword [0x422b18], edi
mov al, byte [0x422740]
add al, 0x62
and eax, 0xff
add eax, 3
and al, 0xfc
call fcn.0041a770
mov ecx, esp
mov edx, 0x422740
call fcn.004196b0
mov ebx, eax
or ecx, 0xffffffff
mov edi, ebx
xor eax, eax
repne scasb al, byte es:[edi]
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
mov edx, dword [ebp - 0x18]
not ecx
dec ecx
mov esi, ecx
mov ecx, dword [eax]
sub ecx, edx
cmp ecx, esi
ja 0x40d84e
call dword [sym.imp.MSVCP60.dll_void___cdecl_std::_Xlen_void_]
test esi, esi
jbe 0x40d893
mov edx, dword [ebp - 0x18]
push 0
lea ecx, [ebp - 0x20]
lea eax, [edx + esi]
push eax
mov dword [ebp - 0x10], eax
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 0x40d893
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x18]
lea edi, [ecx + eax]
mov ecx, esi
mov edx, ecx
mov esi, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp - 0x10]
mov ecx, edx
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [ebp - 0x20]
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 [0x422734]
add al, 0x62
and eax, 0xff
add eax, 3
and al, 0xfc
call fcn.0041a770
mov ecx, esp
mov edx, 0x422734
call fcn.004196b0
mov ebx, eax
or ecx, 0xffffffff
mov edi, ebx
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov esi, ecx
mov ecx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
mov edx, dword [ecx]
mov ecx, dword [ebp - 0x18]
sub edx, ecx
cmp edx, esi
ja 0x40d8dc
call dword [sym.imp.MSVCP60.dll_void___cdecl_std::_Xlen_void_]
test esi, esi
jbe 0x40d920
mov eax, dword [ebp - 0x18]
push 0
add eax, esi
lea ecx, [ebp - 0x20]
push eax
mov dword [ebp - 0x10], eax
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 0x40d920
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x18]
lea edi, [edx + ecx]
mov ecx, esi
mov eax, ecx
mov esi, ebx
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, dword [ebp - 0x10]
push ecx
lea ecx, [ebp - 0x20]
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 dl, byte [0x422b1c]
lea eax, [ebp - 0x70]
inc dl
push eax
mov byte [0x422af9], dl
call fcn.00403280
add esp, 4
mov ecx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
mov byte [ebp - 4], 0xa
mov edx, dword [ecx]
lea ecx, [ebp - 0x20]
push edx
push 0
push eax
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__::append_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
push 1
lea ecx, [ebp - 0x70]
mov byte [ebp - 4], 8
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 al, byte [0x422728]
add al, 0x62
and eax, 0xff
add eax, 3
and al, 0xfc
call fcn.0041a770
mov ecx, esp
mov edx, 0x422728
call fcn.004196b0
mov ebx, eax
or ecx, 0xffffffff
mov edi, ebx
xor eax, eax
repne scasb al, byte es:[edi]
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
mov edx, dword [ebp - 0x18]
not ecx
dec ecx
mov esi, ecx
mov ecx, dword [eax]
sub ecx, edx
cmp ecx, esi
ja 0x40d9aa
call dword [sym.imp.MSVCP60.dll_void___cdecl_std::_Xlen_void_]
test esi, esi
jbe 0x40d9ef
mov edx, dword [ebp - 0x18]
push 0
lea ecx, [ebp - 0x20]
lea eax, [edx + esi]
push eax
mov dword [ebp - 0x10], eax
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 0x40d9ef
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x18]
lea edi, [ecx + eax]
mov ecx, esi
mov edx, ecx
mov esi, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp - 0x10]
mov ecx, edx
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [ebp - 0x20]
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 edi, 0x422724
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov esi, ecx
mov ecx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
mov edx, dword [ecx]
mov ecx, dword [ebp - 0x18]
sub edx, ecx
cmp edx, esi
ja 0x40da17
call dword [sym.imp.MSVCP60.dll_void___cdecl_std::_Xlen_void_]
test esi, esi
jbe 0x40da59
mov eax, dword [ebp - 0x18]
push 0
lea ecx, [ebp - 0x20]
lea ebx, [eax + esi]
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 0x40da59
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x18]
push ebx
lea edi, [edx + ecx]
mov ecx, esi
mov eax, ecx
mov esi, 0x422724
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [ebp - 0x20]
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 [0x422718]
mov ecx, dword [0x422b38]
add al, 0x62
or ecx, 0xfa13ffff
and eax, 0xff
mov byte [0x422b00], 1
add eax, 3
mov dword [0x422b30], ecx
and al, 0xfc
mov word [0x422b04], 1
call fcn.0041a770
mov ecx, esp
mov edx, 0x422718
call fcn.004196b0
mov ebx, eax
or ecx, 0xffffffff
mov edi, ebx
xor eax, eax
mov edx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
repne scasb al, byte es:[edi]
mov eax, dword [edx]
mov edx, dword [ebp - 0x18]
not ecx
dec ecx
sub eax, edx
mov esi, ecx
cmp eax, esi
ja 0x40dac4
call dword [sym.imp.MSVCP60.dll_void___cdecl_std::_Xlen_void_]
test esi, esi
jbe 0x40db09
mov ecx, dword [ebp - 0x18]
push 0
lea eax, [ecx + esi]
lea ecx, [ebp - 0x20]
push eax
mov dword [ebp - 0x10], eax
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 0x40db09
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x18]
mov ecx, esi
mov esi, ebx
lea edi, [eax + edx]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp - 0x10]
mov ecx, edx
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [ebp - 0x20]
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_]
call fcn.004010b0
mov ecx, dword [eax*4 + 0x422678]
mov al, byte [ecx]
add al, 0x62
and eax, 0xff
add eax, 3
and al, 0xfc
call fcn.0041a770
mov esi, esp
call fcn.004010b0
mov edx, dword [eax*4 + 0x422678]
mov ecx, esi
call fcn.004196b0
mov ebx, eax
or ecx, 0xffffffff
mov edi, ebx
xor eax, eax
mov edx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
repne scasb al, byte es:[edi]
mov eax, dword [edx]
mov edx, dword [ebp - 0x18]
not ecx
dec ecx
sub eax, edx
mov esi, ecx
cmp eax, esi
ja 0x40db64
call dword [sym.imp.MSVCP60.dll_void___cdecl_std::_Xlen_void_]
test esi, esi
jbe 0x40dba9
mov ecx, dword [ebp - 0x18]
push 0
lea eax, [ecx + esi]
lea ecx, [ebp - 0x20]
push eax
mov dword [ebp - 0x10], eax
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 0x40dba9
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x18]
mov ecx, esi
mov esi, ebx
lea edi, [eax + edx]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp - 0x10]
mov ecx, edx
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [ebp - 0x20]
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 cl, byte [0x422b28]
mov dl, byte [0x422b18]
add cl, dl
cmp word [0x422b0e], 0
mov byte [0x422afb], cl
je 0x40dbda
mov al, byte [0x422afc]
mov dword [0x422b20], 1
test al, al
jne 0x40dbe4
mov dword [0x422b20], 0
mov esi, dword [0x422b24]
xor ebx, ebx
xor edx, edx
cmp esi, ebx
lea eax, [ebp - 0x34]
setne dl
push eax
push 8
mov word [0x422b0e], dx
call fcn.0040bae0
mov edx, dword [0x422b30]
mov al, byte [0x422af8]
add esp, 8
xor ecx, ecx
cmp edx, ebx
mov edi, 0x422724
setne cl
imul byte [0x422afd]
mov word [0x422b0e], cx
mov byte [0x422afa], al
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
mov dl, byte [ebp + 0xb]
mov word [0x422b06], 0xffff
not ecx
dec ecx
mov byte [ebp - 0x30], dl
push ecx
push 0x422724
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x2c], ebx
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x24], ebx
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_char_const___unsigned_int_]
mov ecx, dword [0x422b2c]
mov byte [ebp - 4], 0xb
movsx dx, byte [0x422afd]
cmp ecx, ebx
mov ecx, 0xd659ffff
setne al
imul dx, word [0x422b02]
mov byte [0x422afc], al
mov eax, dword [0x422b1c]
sub ecx, eax
lea eax, [ebp - 0x30]
mov dword [0x422b24], ecx
mov ecx, dword [ebp - 0x34]
push eax
push ecx
mov word [0x422b08], dx
call fcn.00416500
add esp, 8
test eax, eax
jne 0x40de28
lea edx, [ebp - 0x10]
push edx
push 2
call fcn.0040bae0
movsx eax, byte [0x422afb]
mov esi, dword [0x422b24]
lea ecx, [ebp - 0x4c]
and eax, esi
push ecx
mov dword [0x422b38], eax
mov al, byte [0x422b28]
imul byte [0x422afd]
push 3
mov byte [0x422afb], al
call fcn.0040bae0
movsx dx, byte [0x422afa]
add dx, word [0x422b08]
mov ecx, dword [ebp - 0x10]
lea eax, [ebp - 0x50]
mov word [0x422b10], 0xfffe
push eax
push ecx
mov byte [0x422aff], bl
mov word [0x422b06], dx
call fcn.00416b70
add esp, 0x18
test eax, eax
je 0x40dd78
mov eax, dword [ebp - 0x4c]
lea edx, [ebp - 0x50]
push edx
push eax
call fcn.00416b70
add esp, 8
test eax, eax
je 0x40dd78
mov cx, word [0x422b10]
mov edi, 0x422714
inc cx
xor eax, eax
mov word [0x422b06], cx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
push 1
mov ebx, ecx
lea ecx, [ebp - 0x30]
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 0x40ddbb
mov ecx, ebx
mov esi, 0x422714
jmp 0x40dda0
mov edi, 0x422724
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov ebx, ecx
lea ecx, [ebp - 0x30]
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 0x40ddbb
mov ecx, ebx
mov esi, 0x422724
mov edi, dword [ebp - 0x2c]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x28], ebx
mov byte [eax + ebx], 0
movsx cx, byte [0x422afc]
movsx edx, word [0x422b02]
neg ecx
mov word [0x422b10], cx
mov ecx, dword [ebp - 0x34]
lea eax, [ebp - 0x30]
and edx, 0x8b97ffff
push eax
push ecx
mov word [0x422b12], 0xffff
mov dword [0x422b24], edx
call fcn.00416940
mov al, byte [0x422b10]
mov cl, byte [0x422afc]
xor edx, edx
add esp, 8
cmp word [0x422b0c], dx
mov word [0x422b12], 1
setne dl
add al, cl
mov word [0x422b0e], dx
mov byte [0x422afa], al
xor ebx, ebx
mov al, byte [0x42270c]
movsx ecx, word [0x422b0e]
add al, 0x62
and ecx, 0xb951ffff
and eax, 0xff
mov dword [0x422b20], ecx
add eax, 3
and al, 0xfc
call fcn.0041a770
mov ecx, esp
mov edx, 0x42270c
call fcn.004196b0
mov esi, eax
or ecx, 0xffffffff
mov edi, esi
xor eax, eax
mov edx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
repne scasb al, byte es:[edi]
mov eax, dword [edx]
mov edx, dword [ebp - 0x18]
not ecx
dec ecx
sub eax, edx
mov edi, ecx
cmp eax, edi
ja 0x40de84
call dword [sym.imp.MSVCP60.dll_void___cdecl_std::_Xlen_void_]
cmp edi, ebx
jbe 0x40dec1
mov ecx, dword [ebp - 0x18]
push 0
lea ebx, [ecx + edi]
lea ecx, [ebp - 0x20]
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 0x40dec1
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x18]
mov ecx, edi
lea edi, [eax + edx]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x18], ebx
mov byte [eax + ebx], 0
mov ecx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
xor edi, edi
lea eax, [ebp - 0x30]
mov edx, dword [ecx]
lea ecx, [ebp - 0x20]
push edx
push edi
push eax
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__::append_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
mov eax, dword [0x422b24]
mov esi, dword [ebp + 8]
mov dl, byte [ebp - 0x20]
xor ecx, ecx
cmp eax, edi
setne cl
mov word [0x422b02], cx
mov byte [esi], dl
mov dword [esi + 4], edi
mov dword [esi + 8], edi
mov dword [esi + 0xc], edi
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
lea edx, [ebp - 0x20]
mov ecx, dword [eax]
push ecx
push edi
push edx
mov ecx, esi
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 ecx, dword [ebp - 0x2c]
cmp ecx, edi
je 0x40df36
mov al, byte [ecx - 1]
test al, al
je 0x40df2c
cmp al, 0xff
je 0x40df2c
dec al
mov byte [ecx - 1], al
jmp 0x40df36
dec ecx
push ecx
call sub.MSVCRT.dll_void___cdecl_operator_delete_void__
add esp, 4
mov ecx, dword [ebp - 0x5c]
mov dword [ebp - 0x2c], edi
cmp ecx, edi
mov dword [ebp - 0x28], edi
mov dword [ebp - 0x24], edi
je 0x40df62
mov al, byte [ecx - 1]
test al, al
je 0x40df58
cmp al, 0xff
je 0x40df58
dec al
mov byte [ecx - 1], al
jmp 0x40df62
dec ecx
push ecx
call sub.MSVCRT.dll_void___cdecl_operator_delete_void__
add esp, 4
mov ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x5c], edi
cmp ecx, edi
mov dword [ebp - 0x58], edi
mov dword [ebp - 0x54], edi
je 0x40df8e
mov al, byte [ecx - 1]
test al, al
je 0x40df84
cmp al, 0xff
je 0x40df84
dec al
mov byte [ecx - 1], al
jmp 0x40df8e
dec ecx
push ecx
call sub.MSVCRT.dll_void___cdecl_operator_delete_void__
add esp, 4
mov ecx, dword [ebp - 0x44]
mov dword [ebp - 0x1c], edi
cmp ecx, edi
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x14], edi
je 0x40dfba
mov al, byte [ecx - 1]
test al, al
je 0x40dfb0
cmp al, 0xff
je 0x40dfb0
dec al
mov byte [ecx - 1], al
jmp 0x40dfba
dec ecx
push ecx
call sub.MSVCRT.dll_void___cdecl_operator_delete_void__
add esp, 4
mov ecx, dword [ebp - 0xc]
lea esp, [ebp - 0xcd4]
mov eax, esi
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret