Function at 0x403450
Capabilities:
Contain obfuscated stackstrings
Set environment variable

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x41aa9e
mov eax, dword fs:[0]
push eax
push ecx
mov eax, 0x2964
call fcn.00415c20
mov eax, dword [0x42442c]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x2744]
call fcn.00403e30
mov dword [ebp - 0x2894], eax
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x27d0]
call fcn.00403e30
mov dword [ebp - 0x2884], eax
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x2840]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::constructor_void_]
mov dword [ebp - 0x28bc], eax
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x2828]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::constructor_void_]
mov dword [ebp - 0x2844], eax
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x2810]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::constructor_void_]
mov dword [ebp - 0x28c4], eax
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x2804]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::constructor_void_]
mov dword [ebp - 0x28a4], eax
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x2758]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::constructor_void_]
mov dword [ebp - 0x28cc], eax
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x281c]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::constructor_void_]
mov dword [ebp - 0x28d4], eax
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x2834]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::constructor_void_]
mov dword [ebp - 0x28b0], eax
mov byte [ebp - 4], 9
lea ecx, [ebp - 0x27f8]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::constructor_void_]
mov dword [ebp - 0x28d0], eax
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x27c0]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::constructor_void_]
mov dword [ebp - 0x28b8], eax
mov byte [ebp - 4], 0xb
lea ecx, [ebp - 0x2974]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Out_File::constructor_void_]
mov dword [ebp - 0x28c8], eax
mov byte [ebp - 4], 0xc
mov eax, dword [ebp + 0x10]
push eax
lea ecx, [ebp - 0x2744]
call fcn.00403e70
lea ecx, [ebp - 0x2828]
push ecx
lea edx, [ebp - 0x2840]
push edx
call fcn.00404db0
add esp, 8
push 0x421660
lea ecx, [ebp - 0x2850]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::constructor_char_const__]
mov dword [ebp - 0x28c0], eax
mov byte [ebp - 4], 0xd
lea eax, [ebp - 0x2840]
push eax
lea ecx, [ebp - 0x2850]
push ecx
lea edx, [ebp - 0x2940]
push edx
lea ecx, [ebp - 0x2744]
call fcn.00403fd0
mov dword [ebp - 0x2794], eax
mov eax, dword [ebp - 0x2794]
mov dword [ebp - 0x27a0], eax
mov byte [ebp - 4], 0xe
mov ecx, dword [ebp - 0x27a0]
push ecx
lea edx, [ebp - 0x28e0]
push edx
call dword [sym.imp.utils4c.dll_class_Str___cdecl_Add_Slash_class_Str_const__]
add esp, 8
mov dword [ebp - 0x27a8], eax
mov eax, dword [ebp - 0x27a8]
mov dword [ebp - 0x27b0], eax
mov byte [ebp - 4], 0xf
mov ecx, dword [ebp - 0x27b0]
push ecx
lea ecx, [ebp - 0x2810]
call dword [sym.imp.utils4c.dll_public:_class_Str____thiscall_Str::operator_class_Str_const__]
mov byte [ebp - 4], 0xe
lea ecx, [ebp - 0x28e0]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::destructor_void_]
mov byte [ebp - 4], 0xd
lea ecx, [ebp - 0x2940]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::destructor_void_]
mov byte [ebp - 4], 0xc
lea ecx, [ebp - 0x2850]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::destructor_void_]
push 0x42166c
lea ecx, [ebp - 0x2860]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::constructor_char_const__]
mov dword [ebp - 0x2854], eax
mov byte [ebp - 4], 0x10
lea edx, [ebp - 0x2828]
push edx
lea eax, [ebp - 0x2860]
push eax
lea ecx, [ebp - 0x2904]
push ecx
lea ecx, [ebp - 0x2744]
call fcn.00403fd0
mov dword [ebp - 0x2764], eax
mov edx, dword [ebp - 0x2764]
mov dword [ebp - 0x27d8], edx
mov byte [ebp - 4], 0x11
mov eax, dword [ebp - 0x27d8]
push eax
lea ecx, [ebp - 0x294c]
push ecx
call dword [sym.imp.utils4c.dll_class_Str___cdecl_Add_Slash_class_Str_const__]
add esp, 8
mov dword [ebp - 0x276c], eax
mov edx, dword [ebp - 0x276c]
mov dword [ebp - 0x27b4], edx
mov byte [ebp - 4], 0x12
mov eax, dword [ebp - 0x27b4]
push eax
lea ecx, [ebp - 0x2804]
call dword [sym.imp.utils4c.dll_public:_class_Str____thiscall_Str::operator_class_Str_const__]
mov byte [ebp - 4], 0x11
lea ecx, [ebp - 0x294c]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::destructor_void_]
mov byte [ebp - 4], 0x10
lea ecx, [ebp - 0x2904]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::destructor_void_]
mov byte [ebp - 4], 0xc
lea ecx, [ebp - 0x2860]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::destructor_void_]
push 0x421678
lea ecx, [ebp - 0x2880]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::constructor_char_const__]
mov dword [ebp - 0x28a8], eax
mov byte [ebp - 4], 0x13
push str.TEMP_DIR
lea ecx, [ebp - 0x2870]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::constructor_char_const__]
mov dword [ebp - 0x2864], eax
mov byte [ebp - 4], 0x14
lea ecx, [ebp - 0x2880]
push ecx
lea edx, [ebp - 0x2870]
push edx
lea eax, [ebp - 0x291c]
push eax
lea ecx, [ebp - 0x2744]
call fcn.00403fd0
mov dword [ebp - 0x2774], eax
mov ecx, dword [ebp - 0x2774]
mov dword [ebp - 0x27dc], ecx
mov byte [ebp - 4], 0x15
mov edx, dword [ebp - 0x27dc]
push edx
lea eax, [ebp - 0x2934]
push eax
call dword [sym.imp.utils4c.dll_class_Str___cdecl_Add_Slash_class_Str_const__]
add esp, 8
mov dword [ebp - 0x277c], eax
mov ecx, dword [ebp - 0x277c]
mov dword [ebp - 0x27c4], ecx
mov byte [ebp - 4], 0x16
mov edx, dword [ebp - 0x27c4]
push edx
lea ecx, [ebp - 0x2758]
call dword [sym.imp.utils4c.dll_public:_class_Str____thiscall_Str::operator_class_Str_const__]
mov byte [ebp - 4], 0x15
lea ecx, [ebp - 0x2934]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::destructor_void_]
mov byte [ebp - 4], 0x14
lea ecx, [ebp - 0x291c]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::destructor_void_]
mov byte [ebp - 4], 0x13
lea ecx, [ebp - 0x2870]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::destructor_void_]
mov byte [ebp - 4], 0xc
lea ecx, [ebp - 0x2880]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::destructor_void_]
push 0x421688
lea ecx, [ebp - 0x28a0]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::constructor_char_const__]
mov dword [ebp - 0x28ac], eax
mov byte [ebp - 4], 0x17
push str.N_OF_PIPES
lea ecx, [ebp - 0x2890]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::constructor_char_const__]
mov dword [ebp - 0x2874], eax
mov byte [ebp - 4], 0x18
lea eax, [ebp - 0x28a0]
push eax
lea ecx, [ebp - 0x2890]
push ecx
lea edx, [ebp - 0x28ec]
push edx
lea ecx, [ebp - 0x2744]
call fcn.00403fd0
mov dword [ebp - 0x2784], eax
mov eax, dword [ebp - 0x2784]
mov dword [ebp - 0x27e4], eax
mov byte [ebp - 4], 0x19
mov ecx, dword [ebp - 0x27e4]
push ecx
lea ecx, [ebp - 0x2834]
call dword [sym.imp.utils4c.dll_public:_class_Str____thiscall_Str::operator_class_Str_const__]
mov byte [ebp - 4], 0x18
lea ecx, [ebp - 0x28ec]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::destructor_void_]
mov byte [ebp - 4], 0x17
lea ecx, [ebp - 0x2890]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::destructor_void_]
mov byte [ebp - 4], 0xc
lea ecx, [ebp - 0x28a0]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::destructor_void_]
lea ecx, [ebp - 0x2834]
call dword [sym.imp.utils4c.dll_public:_char____thiscall_Str::operator_char__void_const]
mov dword [ebp - 0x278c], eax
mov edx, dword [ebp - 0x278c]
push edx
call fcn.0040820c
add esp, 4
mov dword [ebp - 0x279c], eax
lea ecx, [ebp - 0x2810]
call dword [sym.imp.utils4c.dll_public:_char____thiscall_Str::operator_char__void_const]
mov dword [ebp - 0x27d4], eax
mov eax, dword [ebp - 0x27d4]
push eax
push str.HOME_DIR
call dword [sym.imp.KERNEL32.dll_SetEnvironmentVariableA]
lea ecx, [ebp - 0x2804]
call dword [sym.imp.utils4c.dll_public:_char____thiscall_Str::operator_char__void_const]
mov dword [ebp - 0x275c], eax
mov ecx, dword [ebp - 0x275c]
push ecx
push str.WORK_DIR
call dword [sym.imp.KERNEL32.dll_SetEnvironmentVariableA]
lea ecx, [ebp - 0x2758]
call dword [sym.imp.utils4c.dll_public:_char____thiscall_Str::operator_char__void_const]
mov dword [ebp - 0x27ec], eax
mov edx, dword [ebp - 0x27ec]
push edx
push str.BWX_TEMP
call dword [sym.imp.KERNEL32.dll_SetEnvironmentVariableA]
mov dword [ebp - 0x2734], 1
jmp 0x403983
mov eax, dword [ebp - 0x2734]
add eax, 1
mov dword [ebp - 0x2734], eax
mov ecx, dword [ebp - 0x2734]
cmp ecx, dword [ebp - 0x279c]
jg 0x403d12
push str.pipe.tmp
lea edx, [ebp - 0x2758]
push edx
lea eax, [ebp - 0x28f8]
push eax
call dword [sym.imp.utils4c.dll_class_Str___cdecl_operator_class_Str_const___char_const__]
add esp, 0xc
mov dword [ebp - 0x27e8], eax
mov ecx, dword [ebp - 0x27e8]
mov dword [ebp - 0x27a4], ecx
mov byte [ebp - 4], 0x1a
mov edx, dword [ebp - 0x27a4]
push edx
lea ecx, [ebp - 0x27f8]
call dword [sym.imp.utils4c.dll_public:_class_Str____thiscall_Str::operator_class_Str_const__]
mov byte [ebp - 4], 0xc
lea ecx, [ebp - 0x28f8]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::destructor_void_]
push str.pipe.ini
lea eax, [ebp - 0x2758]
push eax
lea ecx, [ebp - 0x2910]
push ecx
call dword [sym.imp.utils4c.dll_class_Str___cdecl_operator_class_Str_const___char_const__]
add esp, 0xc
mov dword [ebp - 0x27e0], eax
mov edx, dword [ebp - 0x27e0]
mov dword [ebp - 0x27ac], edx
mov byte [ebp - 4], 0x1b
mov eax, dword [ebp - 0x27ac]
push eax
lea ecx, [ebp - 0x27c0]
call dword [sym.imp.utils4c.dll_public:_class_Str____thiscall_Str::operator_class_Str_const__]
mov byte [ebp - 4], 0xc
lea ecx, [ebp - 0x2910]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::destructor_void_]
mov byte [ebp - 4], 0x1c
lea ecx, [ebp - 0x27f8]
push ecx
call dword [sym.imp.utils4c.dll_void___cdecl_Delete_File_class_Str_const__]
add esp, 4
jmp 0x403a5b
mov dword [ebp - 4], 0xc
jmp 0x403a6b
mov byte [ebp - 4], 0x1e
lea edx, [ebp - 0x27c0]
push edx
call dword [sym.imp.utils4c.dll_void___cdecl_Delete_File_class_Str_const__]
add esp, 4
jmp 0x403a87
mov dword [ebp - 4], 0xc
jmp 0x403a97
lea eax, [ebp - 0x27f8]
push eax
lea ecx, [ebp - 0x2974]
call dword [sym.imp.utils4c.dll_public_virtual:_void___thiscall_Out_File::Open_class_Str_const__]
mov ecx, dword [ebp - 0x2734]
push ecx
lea edx, [ebp - 0x2928]
push edx
lea ecx, [ebp - 0x2744]
call fcn.00404190
mov dword [ebp - 0x2760], eax
mov eax, dword [ebp - 0x2760]
mov dword [ebp - 0x2768], eax
mov byte [ebp - 4], 0x20
mov ecx, dword [ebp - 0x2768]
push ecx
lea ecx, [ebp - 0x281c]
call dword [sym.imp.utils4c.dll_public:_class_Str____thiscall_Str::operator_class_Str_const__]
mov byte [ebp - 4], 0xc
lea ecx, [ebp - 0x2928]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::destructor_void_]
lea edx, [ebp - 0x281c]
push edx
lea ecx, [ebp - 0x2974]
call dword [sym.imp.utils4c.dll_public_virtual:_void___thiscall_Out_File::Write_class_Str_const__]
lea ecx, [ebp - 0x2974]
call dword [sym.imp.utils4c.dll_public_virtual:_void___thiscall_Out_File::Close_void_]
lea ecx, [ebp - 0x27c0]
call dword [sym.imp.utils4c.dll_public:_char____thiscall_Str::operator_char__void_const]
mov dword [ebp - 0x2770], eax
mov eax, dword [ebp - 0x2770]
push eax
lea ecx, [ebp - 0x27d0]
call fcn.00403e70
push 0
push 0x2710
lea ecx, [ebp - 0x2724]
push ecx
lea ecx, [ebp - 0x2744]
call fcn.00404550
lea edx, [ebp - 0x2724]
push edx
lea ecx, [ebp - 0x27d0]
call fcn.00404760
mov eax, dword [ebp - 0x2734]
push eax
push 0x2710
lea ecx, [ebp - 0x2724]
push ecx
lea ecx, [ebp - 0x2744]
call fcn.00404550
lea edx, [ebp - 0x2724]
push edx
lea ecx, [ebp - 0x27d0]
call fcn.004048d0
mov eax, dword [str.TMP_DIR]
mov dword [ebp - 0x2724], eax
mov ecx, dword [0x4216d8]
mov dword [ebp - 0x2720], ecx
mov dl, byte [0x4216dc]
mov byte [ebp - 0x271c], dl
lea ecx, [ebp - 0x2758]
call dword [sym.imp.utils4c.dll_public:_char____thiscall_Str::operator_char__void_const]
mov dword [ebp - 0x2778], eax
mov eax, dword [ebp - 0x2778]
mov dword [ebp - 0x2730], eax
mov ecx, dword [ebp - 0x2730]
mov dword [ebp - 0x274c], ecx
mov edx, dword [ebp - 0x2730]
mov al, byte [edx]
mov byte [ebp - 0x2727], al
add dword [ebp - 0x2730], 1
cmp byte [ebp - 0x2727], 0
jne 0x403be7
mov ecx, dword [ebp - 0x2730]
sub ecx, dword [ebp - 0x274c]
mov edx, dword [ebp - 0x274c]
mov dword [ebp - 0x2780], edx
mov dword [ebp - 0x2788], ecx
lea eax, [ebp - 0x2724]
add eax, 0xffffffff
mov dword [ebp - 0x2738], eax
mov ecx, dword [ebp - 0x2738]
mov dl, byte [ecx + 1]
mov byte [ebp - 0x2725], dl
add dword [ebp - 0x2738], 1
cmp byte [ebp - 0x2725], 0
jne 0x403c32
mov edi, dword [ebp - 0x2738]
mov esi, dword [ebp - 0x2780]
mov eax, dword [ebp - 0x2788]
mov ecx, eax
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 - 0x2724]
mov dword [ebp - 0x272c], ecx
mov edx, dword [ebp - 0x272c]
add edx, 1
mov dword [ebp - 0x2790], edx
mov eax, dword [ebp - 0x272c]
mov cl, byte [eax]
mov byte [ebp - 0x2726], cl
add dword [ebp - 0x272c], 1
cmp byte [ebp - 0x2726], 0
jne 0x403c8c
mov edx, dword [ebp - 0x272c]
sub edx, dword [ebp - 0x2790]
mov dword [ebp - 0x2798], edx
mov eax, dword [ebp - 0x2798]
add eax, 1
mov dword [ebp - 0x2748], eax
cmp dword [ebp - 0x2748], 0x2710
jae 0x403cd9
jmp 0x403cde
call fcn.004085fe
mov ecx, dword [ebp - 0x2748]
mov byte [ebp + ecx - 0x2724], 0
lea edx, [ebp - 0x2724]
push edx
lea ecx, [ebp - 0x27d0]
call fcn.004048d0
lea eax, [ebp - 0x27c0]
push eax
call fcn.00404ba0
add esp, 4
jmp 0x403974
mov byte [ebp - 4], 0xb
lea ecx, [ebp - 0x2974]
call dword [sym.imp.utils4c.dll_public_virtual:_void___thiscall_Out_File::destructor_void_]
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x27c0]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::destructor_void_]
mov byte [ebp - 4], 9
lea ecx, [ebp - 0x27f8]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::destructor_void_]
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x2834]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::destructor_void_]
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x281c]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::destructor_void_]
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x2758]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::destructor_void_]
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x2804]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::destructor_void_]
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x2810]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::destructor_void_]
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x2828]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::destructor_void_]
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x2840]
call dword [sym.imp.utils4c.dll_public:_void___thiscall_Str::destructor_void_]
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x27d0]
call fcn.00403e50
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x2744]
call fcn.00403e50
jmp 0x403df3
mov dword [ebp - 4], 0xffffffff
jmp 0x403e03
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.00407a17
mov esp, ebp
pop ebp
ret 0x10