Function at 0x401c10
Capabilities:
Accept command line arguments
Get common file path
Initialize winsock library
Query environment variable
Set current directory

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x448e20
mov eax, dword fs:[0]
push eax
mov eax, 0x2ddc
call fcn.00434d20
mov eax, dword [0x45c510]
xor eax, ebp
mov dword [ebp - 0x10], eax
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x2dd8], ecx
mov dword [ebp - 0x208], 0x2000
mov byte [ebp - 0x220c], 0
push 0x1fff
push 0
lea eax, [ebp - 0x220b]
push eax
call fcn.00433610
add esp, 0xc
push 0x2000
lea ecx, [ebp - 0x220c]
push ecx
mov edx, dword [ebp - 0x2dd8]
mov eax, dword [edx + 0x44]
push eax
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea ecx, [ebp - 0x220c]
push ecx
lea ecx, [ebp - 0x2d68]
call fcn.004025f0
mov dword [ebp - 4], 0
lea edx, [ebp - 0x2d68]
push edx
lea eax, [ebp - 0x24d4]
push eax
call fcn.004012e0
add esp, 8
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x2d68]
call fcn.00402670
lea ecx, [ebp - 0x220c]
push ecx
lea ecx, [ebp - 0x2d84]
call fcn.004025f0
mov byte [ebp - 4], 3
push 1
lea edx, [ebp - 0x2d84]
push edx
lea eax, [ebp - 0x24b8]
push eax
call fcn.00401470
add esp, 0xc
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x2d84]
call fcn.00402670
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
push eax
lea ecx, [ebp - 0x1c0]
call fcn.004025f0
mov byte [ebp - 4], 6
push str.__FS__
lea ecx, [ebp - 0x249c]
call fcn.004025f0
mov byte [ebp - 4], 7
push str.__FE__
lea ecx, [ebp - 0x204]
call fcn.004025f0
mov byte [ebp - 4], 8
push str._start_repair
lea ecx, [ebp - 0x24f0]
call fcn.004025f0
mov byte [ebp - 4], 9
push 0x4508e4
lea ecx, [ebp - 0x1dc]
call fcn.004025f0
mov byte [ebp - 4], 0xa
push 0
lea ecx, [ebp - 0x24f0]
push ecx
lea ecx, [ebp - 0x1c0]
call fcn.00402860
cmp dword [0x4509dc], eax
jne 0x402255
push 4
push 0x4508ec
push 0x4508fc
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov dword [ebp - 0x2d10], eax
cmp dword [ebp - 0x2d10], 7
jne 0x401e31
mov dword [ebp - 0x2d88], 0
mov byte [ebp - 4], 9
lea ecx, [ebp - 0x1dc]
call fcn.00402670
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x24f0]
call fcn.00402670
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x204]
call fcn.00402670
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x249c]
call fcn.00402670
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x1c0]
call fcn.00402670
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x24b8]
call fcn.00402670
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x24d4]
call fcn.00402670
mov eax, dword [ebp - 0x2d88]
jmp 0x402453
mov byte [ebp - 0x2d0c], 0
push 0x7ff
push 0
lea edx, [ebp - 0x2d0b]
push edx
call fcn.00433610
add esp, 0xc
lea ecx, [ebp - 0x2d4c]
call fcn.004025c0
mov byte [ebp - 4], 0xb
push 0
push 0
push 0x450924
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
mov dword [ebp - 0x2d30], eax
cmp dword [ebp - 0x2d30], 0
je 0x401e99
mov eax, dword [ebp - 0x2d30]
push eax
lea ecx, [ebp - 0x2d0c]
push ecx
push str.TEMP
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
jmp 0x401f50
lea edx, [ebp - 0x2d0c]
push edx
push 0x800
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
test eax, eax
jne 0x401f50
push 0x450934
call fcn.004012c0
add esp, 4
mov dword [ebp - 0x2d8c], 0
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x2d4c]
call fcn.00402670
mov byte [ebp - 4], 9
lea ecx, [ebp - 0x1dc]
call fcn.00402670
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x24f0]
call fcn.00402670
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x204]
call fcn.00402670
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x249c]
call fcn.00402670
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x1c0]
call fcn.00402670
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x24b8]
call fcn.00402670
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x24d4]
call fcn.00402670
mov eax, dword [ebp - 0x2d8c]
jmp 0x402453
lea eax, [ebp - 0x2d0c]
push eax
lea ecx, [ebp - 0x2d4c]
call fcn.004026b0
lea ecx, [ebp - 0x2d4c]
call fcn.00402800
sub eax, 1
push eax
lea ecx, [ebp - 0x2d4c]
call fcn.004027b0
movsx ecx, byte [eax]
cmp ecx, 0x5c
jne 0x401f9e
lea ecx, [ebp - 0x2d4c]
call fcn.00402800
sub eax, 1
push eax
lea ecx, [ebp - 0x2d4c]
call fcn.00402820
push 0x5c
lea edx, [ebp - 0x2d4c]
push edx
lea eax, [ebp - 0x2da8]
push eax
call fcn.004036b0
add esp, 0xc
mov dword [ebp - 0x2ddc], eax
mov ecx, dword [ebp - 0x2ddc]
mov dword [ebp - 0x2de0], ecx
mov byte [ebp - 4], 0xc
lea edx, [ebp - 0x24b8]
push edx
mov eax, dword [ebp - 0x2de0]
push eax
lea ecx, [ebp - 0x250c]
push ecx
call fcn.00403740
add esp, 0xc
mov byte [ebp - 4], 0xe
lea ecx, [ebp - 0x2da8]
call fcn.00402670
lea ecx, [ebp - 0x250c]
call fcn.004027e0
push eax
lea edx, [ebp - 0x220c]
push edx
call fcn.00401990
add esp, 8
movzx eax, al
test eax, eax
jne 0x4020ca
push 0x450958
call fcn.004012c0
add esp, 4
mov dword [ebp - 0x2dac], 0
mov byte [ebp - 4], 0xb
lea ecx, [ebp - 0x250c]
call fcn.00402670
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x2d4c]
call fcn.00402670
mov byte [ebp - 4], 9
lea ecx, [ebp - 0x1dc]
call fcn.00402670
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x24f0]
call fcn.00402670
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x204]
call fcn.00402670
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x249c]
call fcn.00402670
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x1c0]
call fcn.00402670
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x24b8]
call fcn.00402670
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x24d4]
call fcn.00402670
mov eax, dword [ebp - 0x2dac]
jmp 0x402453
lea ecx, [ebp - 0x24f0]
push ecx
lea ecx, [ebp - 0x2d2c]
call fcn.00402630
mov byte [ebp - 4], 0xf
push 0x45097c
lea ecx, [ebp - 0x2d2c]
call fcn.004026f0
lea edx, [ebp - 0x1dc]
push edx
lea ecx, [ebp - 0x24d4]
call fcn.004026d0
lea eax, [ebp - 0x249c]
push eax
lea ecx, [ebp - 0x2d2c]
call fcn.004026d0
lea ecx, [ebp - 0x24d4]
push ecx
lea edx, [ebp - 0x2dc8]
push edx
call fcn.00401670
add esp, 8
mov dword [ebp - 0x2de4], eax
mov eax, dword [ebp - 0x2de4]
mov dword [ebp - 0x2de8], eax
mov byte [ebp - 4], 0x10
mov ecx, dword [ebp - 0x2de8]
push ecx
lea ecx, [ebp - 0x2d2c]
call fcn.004026d0
mov byte [ebp - 4], 0xf
lea ecx, [ebp - 0x2dc8]
call fcn.00402670
lea edx, [ebp - 0x204]
push edx
lea ecx, [ebp - 0x2d2c]
call fcn.004026d0
lea ecx, [ebp - 0x2d2c]
call fcn.004027e0
push eax
lea ecx, [ebp - 0x250c]
call fcn.004027e0
push eax
call fcn.00401ab0
add esp, 8
movzx eax, al
test eax, eax
jne 0x4021a7
push 0x450980
call fcn.004012c0
add esp, 4
mov dword [ebp - 0x2dcc], 0
mov byte [ebp - 4], 0xe
lea ecx, [ebp - 0x2d2c]
call fcn.00402670
mov byte [ebp - 4], 0xb
lea ecx, [ebp - 0x250c]
call fcn.00402670
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x2d4c]
call fcn.00402670
mov byte [ebp - 4], 9
lea ecx, [ebp - 0x1dc]
call fcn.00402670
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x24f0]
call fcn.00402670
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x204]
call fcn.00402670
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x249c]
call fcn.00402670
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x1c0]
call fcn.00402670
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x24b8]
call fcn.00402670
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x24d4]
call fcn.00402670
mov eax, dword [ebp - 0x2dcc]
jmp 0x402453
mov dword [ebp - 0x1e8], 8
mov dword [ebp - 0x1e4], 0xff
lea ecx, [ebp - 0x1e8]
push ecx
call dword [sym.imp.COMCTL32.dll_InitCommonControlsEx]
mov ecx, dword [ebp - 0x2dd8]
call fcn.0041511b
push 0
call fcn.00416f72
add esp, 4
lea ecx, [ebp - 0x2480]
call fcn.004025c0
mov byte [ebp - 4], 0x11
lea edx, [ebp - 0x2480]
push edx
lea eax, [ebp - 0x204]
push eax
lea ecx, [ebp - 0x249c]
push ecx
lea edx, [ebp - 0x1c0]
push edx
call fcn.00401b00
add esp, 0x10
movzx eax, al
test eax, eax
jne 0x402359
mov dword [ebp - 0x2dd0], 0
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x2480]
call fcn.00402670
mov byte [ebp - 4], 9
lea ecx, [ebp - 0x1dc]
call fcn.00402670
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x24f0]
call fcn.00402670
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x204]
call fcn.00402670
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x249c]
call fcn.00402670
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x1c0]
call fcn.00402670
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x24b8]
call fcn.00402670
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x24d4]
call fcn.00402670
mov eax, dword [ebp - 0x2dd0]
jmp 0x402453
lea ecx, [ebp - 0x2480]
call fcn.004027e0
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
push 0
lea ecx, [ebp - 0x2480]
push ecx
lea ecx, [ebp - 0x2464]
call fcn.00403fc0
mov byte [ebp - 4], 0x12
mov edx, dword [ebp - 0x2dd8]
lea eax, [ebp - 0x2464]
mov dword [edx + 0x20], eax
lea ecx, [ebp - 0x1a4]
push ecx
push 0x202
call sub.WS2_32.dll_WSAStartup
lea ecx, [ebp - 0x2464]
call fcn.00418327
mov dword [ebp - 0x1e0], eax
call sub.WS2_32.dll_WSACleanup
mov dword [ebp - 0x2dd4], 0
mov byte [ebp - 4], 0x11
lea ecx, [ebp - 0x2464]
call fcn.00402470
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x2480]
call fcn.00402670
mov byte [ebp - 4], 9
lea ecx, [ebp - 0x1dc]
call fcn.00402670
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x24f0]
call fcn.00402670
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x204]
call fcn.00402670
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x249c]
call fcn.00402670
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x1c0]
call fcn.00402670
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x24b8]
call fcn.00402670
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x24d4]
call fcn.00402670
mov eax, dword [ebp - 0x2dd4]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00430e59
mov esp, ebp
pop ebp
ret