Function at 0x10004660
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x180
mov esi, esp
mov dword [esi + 0x168], ebp
movzx eax, byte [ebp + 0x10]
movzx ecx, byte [ebp + 0xc]
mov dword [esi + 0x16c], esp
mov dword [esi + 0x178], 0xffffffff
lea edx, [esi + 0x170]
mov dword [esi + 0x174], 0x10015680
mov edi, dword fs:[0]
mov dword [esi + 0x170], edi
mov dword fs:[0], edx
mov dword [esi + 0x68], 0
mov byte [esi + 0x68], cl
mov byte [esi + 0x69], al
test cl, cl
jne 0x100046c8
test al, al
je 0x100046fa
mov edi, esp
push eax
sub esp, 0x30
mov eax, esp
mov ecx, dword [esi + 0x68]
lea edx, [eax + 8]
mov dword [eax + 8], vtable.std::_Func_impl_no_alloc_class__void___cdecl_communicate_class_c_tcp_client___bool__bool_::_1::_lambda_1___void__class_c_tcp_client___struct_std::atomic_bool____void__.0
mov dword [eax + 0x2c], edx
mov dword [eax + 4], 0
mov dword [eax], 0x19191
mov dword [eax + 0x30], ecx
mov ecx, dword [ebp + 8]
mov eax, dword [ecx]
call dword [eax + 4]
mov esp, edi
mov dword [esi + 0x24], 0
mov dword [esi + 0x28], 0
push 0x20
call fcn.10015b56
add esp, 4
mov dword [eax], eax
mov dword [eax + 4], eax
mov dword [eax + 8], eax
mov word [eax + 0xc], 0x101
mov dword [esi + 0x24], eax
jmp 0x1000474b
push eax
push ecx
call fcn.10015b8b
add esp, 8
mov dword [esi + 0x54], 0
cmp byte [esi + 0x1b], 0
je 0x10005704
xorps xmm0, xmm0
movaps xmmword [esi + 0x50], xmm0
mov dword [esi + 0x178], 2
mov ecx, dword [ebp + 8]
lea eax, [esi + 0x54]
push eax
call fcn.10001390
mov byte [esi + 0x1b], al
cmp byte [esi + 0x1b], 0
je 0x10005650
mov eax, dword [esi + 0x50]
mov ecx, dword [esi + 0x54]
mov edx, dword [esi + 0x58]
sub edx, ecx
cmp edx, eax
jbe 0x10005699
mov edi, dword [ecx + eax]
mov ebx, dword [ecx + eax + 4]
mov dword [esi], edi
xor edi, 1
mov dword [esi + 4], ebx
or edi, ebx
lea edi, [eax + 8]
mov dword [esi + 0x50], edi
je 0x1000487a
mov ebx, dword [esi]
or ebx, dword [esi + 4]
jne 0x10004954
cmp edx, edi
jbe 0x100056a3
mov edx, dword [ecx + eax + 8]
mov ecx, dword [ecx + eax + 0xc]
add eax, 0x10
mov dword [esi + 0x50], eax
mov dword [esi + 4], ecx
push ecx
mov dword [esi], edx
push edx
lea eax, [esi + 0x78]
push eax
call fcn.10005950
add esp, 0xc
mov dword [esi + 0x178], 3
lea eax, [esi + 0x150]
push eax
call fcn.10004370
add esp, 4
mov dword [esi + 0x178], 4
sub esp, 0xc
movzx eax, byte [esi + 0x30]
mov byte [esp], al
lea eax, [esi + 0x78]
mov dword [esp + 8], eax
lea eax, [esi + 0x150]
mov dword [esp + 4], eax
lea ecx, [esi + 0x90]
call fcn.1000ae00
mov eax, dword [esi + 0xa0]
mov ecx, dword [esi + 0xa4]
mov edx, ecx
sub edx, eax
cmp edx, 4
jae 0x10004dd3
mov dword [esi + 0x178], 5
sub esp, 0x10
movzx eax, byte [esi + 0x30]
mov byte [esp + 4], al
mov dword [esp + 0xc], 4
mov dword [esp + 8], str..dll
mov dword [esp], 4
lea ecx, [esi + 0x90]
call fcn.1000ac80
lea ebx, [esi + 0x30]
jmp 0x10004e0c
cmp edx, edi
jbe 0x1000569e
mov edx, dword [ecx + eax + 8]
mov dword [esi], edx
mov ecx, dword [ecx + eax + 0xc]
mov dword [esi + 4], ecx
add eax, 0x10
mov dword [esi + 0x50], eax
lea ecx, [esi + 0x50]
lea eax, [esi + 0x6c]
push eax
call fcn.100061d0
mov dword [esi + 0x178], 9
push dword [esi + 4]
push dword [esi]
lea eax, [esi + 0x78]
push eax
call fcn.10005950
add esp, 0xc
mov dword [esi + 0x178], 0xa
lea eax, [esi + 0x150]
push eax
call fcn.10004370
add esp, 4
mov dword [esi + 0x178], 0xb
sub esp, 0xc
movzx eax, byte [esi + 0x2c]
mov byte [esp], al
lea eax, [esi + 0x78]
mov dword [esp + 8], eax
lea eax, [esi + 0x150]
mov dword [esp + 4], eax
lea ecx, [esi + 0x30]
call fcn.1000ae00
mov eax, dword [esi + 0x40]
mov ecx, dword [esi + 0x44]
mov edx, ecx
sub edx, eax
cmp edx, 4
jae 0x10004fd1
mov dword [esi + 0x178], 0xc
sub esp, 0x10
movzx eax, byte [esi + 0x2c]
mov byte [esp + 4], al
mov dword [esp + 0xc], 4
mov dword [esp + 8], str..dll
mov dword [esp], 4
lea ecx, [esi + 0x30]
call fcn.1000ac80
lea ebx, [esi + 0x90]
jmp 0x10005002
mov eax, dword [esi + 0x24]
mov edi, dword [eax + 4]
xor edx, edx
cmp byte [edi + 0xd], 0
mov dword [esi + 0x14], eax
je 0x10004980
mov ebx, dword [esi]
mov ecx, dword [esi + 4]
cmp byte [eax + 0xd], 0
jne 0x100049c1
jmp 0x100049b9
mov ebx, edi
mov edx, dword [edi + 0x10]
mov ecx, dword [edi + 0x14]
cmp edx, dword [esi]
mov edi, ecx
sbb edi, dword [esi + 4]
lea edi, [ebx + 8]
cmovge eax, ebx
cmovge edi, ebx
mov edi, dword [edi]
cmp byte [edi + 0xd], 0
je 0x10004980
cmp edx, dword [esi]
mov edi, dword [esi + 4]
sbb ecx, edi
setge cl
movzx edx, cl
mov ecx, edi
mov edi, ebx
mov ebx, dword [esi]
cmp byte [eax + 0xd], 0
jne 0x100049c1
cmp ebx, dword [eax + 0x10]
sbb ecx, dword [eax + 0x14]
jge 0x10004a1a
mov dword [esi + 0xc], edx
mov dword [esi + 8], edi
cmp dword [esi + 0x28], 0x7ffffff
mov dword [esi + 0x178], 2
je 0x100056b7
push 0x20
call fcn.10015b56
add esp, 4
mov ecx, dword [esi]
mov dword [eax + 0x10], ecx
mov ecx, dword [esi + 4]
mov dword [eax + 0x14], ecx
mov dword [eax + 0x18], 0
mov ecx, dword [esi + 0x14]
mov dword [eax], ecx
mov dword [eax + 4], ecx
mov dword [eax + 8], ecx
mov word [eax + 0xc], 0
lea ecx, [esi + 0x24]
push eax
push dword [esi + 0xc]
push dword [esi + 8]
call fcn.1000eb40
mov eax, dword [eax + 0x18]
test eax, eax
je 0x10005650
mov dword [esi + 0x20], eax
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0x14]
mov eax, dword [eax]
mov eax, dword [eax]
mov eax, dword [eax + 0x10]
mov dword [esi + 8], eax
mov byte [esi + 0x30], 0xab
mov dword [esi + 0x34], 8
movsd xmm0, qword [0x10017180]
movsd qword [esi + 0x38], xmm0
xor edi, edi
lea ebx, [esi + 0x30]
nop
movsx eax, byte [esi + edi + 0x38]
mov ecx, ebx
push eax
call fcn.1000afe0
mov byte [esi + edi + 0x38], al
inc edi
cmp edi, dword [esi + 0x34]
jb 0x10004a60
movaps xmm0, xmmword [0x100170d0]
movups xmmword [esi + 0x90], xmm0
movaps xmm0, xmmword [0x100170e0]
movups xmmword [esi + 0xa0], xmm0
xor edi, edi
lea ebx, [esi + 0x90]
nop dword [eax + eax]
mov ecx, ebx
push dword [esi + 0x90]
push dword [esi + edi*4 + 0x9c]
call fcn.10008fc0
mov dword [esi + edi*4 + 0x9c], eax
inc edi
cmp edi, dword [esi + 0x94]
jb 0x10004aa0
mov eax, dword [esi + 0x98]
mov eax, dword [esi + eax*4 + 0x9c]
mov ecx, dword [esi + 8]
mov edi, dword [eax + ecx]
movaps xmm0, xmmword [0x100170f0]
movups xmmword [esi + 0x90], xmm0
mov dword [esi + 0xa0], 0x6573b858
xor ebx, ebx
nop word cs:[eax + eax]
lea ecx, [esi + 0x90]
push dword [esi + 0x90]
push dword [esi + ebx*4 + 0x9c]
call fcn.10008fc0
mov dword [esi + ebx*4 + 0x9c], eax
inc ebx
cmp ebx, dword [esi + 0x94]
jb 0x10004b00
add edi, dword [esi + 8]
mov eax, dword [esi + 0x98]
mov eax, dword [esi + eax*4 + 0x9c]
mov eax, dword [eax + edi]
mov dword [esi + 0xc], eax
movaps xmm0, xmmword [0x10017100]
movups xmmword [esi + 0x90], xmm0
mov dword [esi + 0xa0], 0x7580be35
mov dword [esi + 0xa4], 0x7ada6ad4
xor edi, edi
lea ebx, [esi + 0x90]
nop dword [eax + eax]
mov ecx, ebx
push dword [esi + 0x90]
push dword [esi + edi*4 + 0x9c]
call fcn.10008fc0
mov dword [esi + edi*4 + 0x9c], eax
inc edi
cmp edi, dword [esi + 0x94]
jb 0x10004b70
mov ecx, dword [esi + 0xc]
add ecx, dword [esi + 8]
mov eax, dword [esi + 0x98]
mov eax, dword [esi + eax*4 + 0x9c]
mov dword [esi + 0xc], ecx
mov eax, dword [eax + ecx]
mov dword [esi + 0x1c], eax
movaps xmm0, xmmword [0x10017110]
movups xmmword [esi + 0x90], xmm0
mov dword [esi + 0xa0], 0x458dc411
mov dword [esi + 0xa4], 0x4ae770b0
mov dword [esi + 0xa8], 0x50411d4f
xor edi, edi
nop
mov ecx, ebx
push dword [esi + 0x90]
push dword [esi + edi*4 + 0x9c]
call fcn.10008fc0
mov dword [esi + edi*4 + 0x9c], eax
inc edi
cmp edi, dword [esi + 0x94]
jb 0x10004be0
mov eax, dword [esi + 0x98]
mov eax, dword [esi + eax*4 + 0x9c]
mov ecx, dword [esi + 0xc]
mov eax, dword [eax + ecx]
mov dword [esi + 0x10], eax
movaps xmm0, xmmword [0x10017120]
movups xmmword [esi + 0x90], xmm0
movaps xmm0, xmmword [0x10017130]
movups xmmword [esi + 0xa0], xmm0
xor edi, edi
nop dword [eax + eax]
mov ecx, ebx
push dword [esi + 0x90]
push dword [esi + edi*4 + 0x9c]
call fcn.10008fc0
mov dword [esi + edi*4 + 0x9c], eax
inc edi
cmp edi, dword [esi + 0x94]
jb 0x10004c40
xor ecx, ecx
mov edx, dword [esi + 8]
add dword [esi + 0x1c], edx
je 0x1000561d
mov eax, dword [esi + 0x10]
add eax, edx
je 0x1000561d
mov dword [esi + 0x10], eax
mov eax, dword [esi + 0x98]
mov eax, dword [esi + eax*4 + 0x9c]
mov edi, dword [esi + 0xc]
mov eax, dword [eax + edi]
add eax, edx
je 0x1000561d
mov dword [esi + 0x64], eax
mov dword [esi + 4], 0
jmp 0x10004cc2
cmp eax, 0x52e8c03b
mov edi, dword [esi + 4]
je 0x10005603
inc edi
mov dword [esi + 4], edi
movaps xmm0, xmmword [0x10017140]
movups xmmword [esi + 0x90], xmm0
mov dword [esi + 0xa0], 0x65a7cfcb
xor edi, edi
nop dword [eax]
mov ecx, ebx
push dword [esi + 0x90]
push dword [esi + edi*4 + 0x9c]
call fcn.10008fc0
mov dword [esi + edi*4 + 0x9c], eax
inc edi
cmp edi, dword [esi + 0x94]
jb 0x10004ce0
mov eax, dword [esi + 0x98]
mov eax, dword [esi + eax*4 + 0x9c]
mov ecx, dword [esi + 0xc]
mov edi, dword [esi + 4]
cmp edi, dword [eax + ecx]
jae 0x10005416
mov eax, dword [esi + 0x1c]
mov eax, dword [eax + edi*4]
add eax, dword [esi + 8]
mov dword [esi + 0x14], eax
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_strlen
add esp, 4
cmp eax, 0xffffffff
je 0x10004cbe
lea ecx, [eax + 1]
mov edx, ecx
and edx, 3
mov dword [esi], edx
cmp eax, 3
jae 0x10004d60
mov eax, 0x1d
xor edx, edx
jmp 0x10004d9e
and ecx, 0xfffffffc
mov eax, dword [esi + 0x14]
lea ebx, [eax + 3]
mov eax, 0x1d
xor edx, edx
movsx edi, byte [ebx + edx - 3]
xor edi, eax
lea eax, [edi + edi*4]
movsx edi, byte [ebx + edx - 2]
xor edi, eax
lea eax, [edi + edi*4]
movsx edi, byte [ebx + edx - 1]
xor edi, eax
lea eax, [edi + edi*4]
movsx edi, byte [ebx + edx]
xor edi, eax
lea eax, [edi + edi*4]
add edx, 4
cmp ecx, edx
jne 0x10004d70
cmp dword [esi], 0
lea ebx, [esi + 0x90]
mov edi, dword [esi + 0x14]
je 0x10004cb0
add edi, edx
xor ecx, ecx
nop word cs:[eax + eax]
movsx edx, byte [edi + ecx]
xor edx, eax
lea eax, [edx + edx*4]
inc ecx
cmp dword [esi], ecx
jne 0x10004dc0
jmp 0x10004cb0
lea edx, [eax + 4]
mov dword [esi + 0xa0], edx
lea edx, [esi + 0x90]
cmp ecx, 8
lea ebx, [esi + 0x30]
jb 0x10004df0
mov edx, dword [esi + 0x90]
mov dword [edx + eax*2 + 4], 0x6c006c
mov dword [edx + eax*2], 0x64002e
mov word [edx + eax*2 + 8], 0
lea eax, [esi + 0x90]
movsd xmm0, qword [eax + 0x10]
movsd qword [esi + 0x40], xmm0
movups xmm0, xmmword [eax]
movaps xmmword [esi + 0x30], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
mov word [eax], 0
mov eax, dword [esi + 0xa4]
cmp eax, 8
jb 0x10004e73
mov ecx, dword [esi + 0x90]
lea edi, [eax + eax]
add edi, 2
cmp edi, 0x1000
jb 0x10004e69
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x10005693
add eax, eax
add eax, 0x25
mov edi, eax
mov ecx, edx
push edi
push ecx
call fcn.10015b8b
add esp, 8
mov dword [esi + 0xa0], 0
mov dword [esi + 0xa4], 7
mov word [esi + 0x90], 0
mov eax, dword [esi + 0x164]
cmp eax, 8
jb 0x10004ed3
mov ecx, dword [esi + 0x150]
lea edi, [eax + eax]
add edi, 2
cmp edi, 0x1000
jb 0x10004ec9
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x10005693
add eax, eax
add eax, 0x25
mov edi, eax
mov ecx, edx
push edi
push ecx
call fcn.10015b8b
add esp, 8
mov eax, dword [esi + 0x8c]
cmp eax, 8
jb 0x10004f1d
mov ecx, dword [esi + 0x78]
lea edi, [eax + eax]
add edi, 2
cmp edi, 0x1000
jb 0x10004f09
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x10005693
add eax, eax
add eax, 0x25
mov edi, eax
mov ecx, edx
push edi
push ecx
call fcn.10015b8b
add esp, 8
mov dword [esi + 0x178], 6
cmp dword [esi + 0x44], 8
mov eax, ebx
jb 0x10004f28
mov eax, dword [esi + 0x30]
mov dword [esi + 0x178], 6
lea ecx, [esi + 0x90]
push 1
push 0x40
push 1
push eax
call fcn.100151e0
mov eax, dword [esi + 0x90]
mov ecx, dword [eax + 4]
lea eax, [esi + 0x90]
add ecx, eax
call dword [sym.imp.MSVCP140.dll_public:_bool___thiscall_std::ios_base::good_void_const]
mov ecx, eax
test al, al
mov ebx, dword [esi]
je 0x10005544
mov dword [esi + 0xc], esp
sub esp, 0x24
mov edi, esp
xorps xmm0, xmm0
movups xmmword [edi + 0xc], xmm0
mov dword [edi + 0x20], 0
mov dword [edi + 0x1c], 0
cmp dword [esi + 0x44], 8
lea eax, [esi + 0x30]
jb 0x10004f90
mov eax, dword [esi + 0x30]
mov dword [esi + 8], eax
mov edx, dword [esi + 0x40]
cmp edx, 0x7fffffff
jae 0x100056d0
mov eax, edi
add eax, 0xc
cmp edx, 7
mov byte [esi + 0x1c], cl
mov dword [esi + 0x14], edi
mov dword [esi + 0x64], eax
ja 0x10005214
mov dword [edi + 0x1c], edx
mov dword [edi + 0x20], 7
mov ecx, dword [esi + 8]
movups xmm0, xmmword [ecx]
movups xmmword [eax], xmm0
jmp 0x10005458
lea edx, [eax + 4]
mov dword [esi + 0x40], edx
lea edi, [esi + 0x30]
mov edx, edi
cmp ecx, 8
lea ebx, [esi + 0x90]
jb 0x10004fea
mov edx, dword [esi + 0x30]
mov dword [edx + eax*2 + 4], 0x6c006c
mov dword [edx + eax*2], 0x64002e
mov word [edx + eax*2 + 8], 0
mov eax, edi
movsd xmm0, qword [eax + 0x10]
movsd qword [esi + 0xa0], xmm0
movups xmm0, xmmword [eax]
movaps xmmword [esi + 0x90], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
mov word [eax], 0
mov eax, dword [esi + 0x44]
cmp eax, 8
jb 0x10005069
mov ecx, dword [esi + 0x30]
lea edi, [eax + eax]
add edi, 2
cmp edi, 0x1000
jb 0x1000505f
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x10005693
add eax, eax
add eax, 0x25
mov edi, eax
mov ecx, edx
push edi
push ecx
call fcn.10015b8b
add esp, 8
mov dword [esi + 0x40], 0
mov dword [esi + 0x44], 7
mov word [esi + 0x30], 0
mov eax, dword [esi + 0x164]
cmp eax, 8
jb 0x100050c0
mov ecx, dword [esi + 0x150]
lea edi, [eax + eax]
add edi, 2
cmp edi, 0x1000
jb 0x100050b6
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x10005693
add eax, eax
add eax, 0x25
mov edi, eax
mov ecx, edx
push edi
push ecx
call fcn.10015b8b
add esp, 8
mov eax, dword [esi + 0x8c]
cmp eax, 8
jb 0x10005100
mov ecx, dword [esi + 0x78]
lea edi, [eax + eax]
add edi, 2
cmp edi, 0x1000
jb 0x100050f6
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x10005693
add eax, eax
add eax, 0x25
mov edi, eax
mov ecx, edx
push edi
push ecx
call fcn.10015b8b
add esp, 8
cmp dword [esi + 0xa4], 8
mov eax, ebx
jb 0x10005111
mov eax, dword [esi + 0x90]
push 0x10018d06
push eax
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll__wfopen]
add esp, 8
mov edi, eax
mov eax, dword [esi + 0x6c]
mov ecx, dword [esi + 0x70]
sub ecx, eax
push edi
push ecx
push 1
push eax
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fwrite]
add esp, 0x10
push edi
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fclose]
add esp, 4
mov dword [esi + 8], esp
sub esp, 0x24
mov edx, esp
xorps xmm0, xmm0
movups xmmword [edx + 0xc], xmm0
mov dword [edx + 0x20], 0
mov dword [edx + 0x1c], 0
mov ecx, dword [esi + 0xa0]
cmp dword [esi + 0xa4], 8
mov eax, ebx
jb 0x10005176
mov eax, dword [esi + 0x90]
cmp ecx, 0x7fffffff
mov ebx, dword [esi]
jae 0x100056a8
mov edi, edx
add edi, 0xc
cmp ecx, 7
mov dword [esi + 0x14], edx
mov dword [esi + 0x20], edi
ja 0x100051a9
mov dword [edx + 0x1c], ecx
mov dword [edx + 0x20], 7
movups xmm0, xmmword [eax]
movups xmmword [edi], xmm0
jmp 0x100052b9
mov dword [esi + 0xc], eax
mov dword [edx + 0x20], 7
mov dword [esi + 0x1c], ecx
or ecx, 7
cmp ecx, 0x7ffffffe
ja 0x100056c1
cmp ecx, 0xb
mov eax, 0xa
cmovb ecx, eax
lea eax, [ecx + ecx]
cmp ecx, 0x7ff
mov dword [esi + 0x10], ecx
jb 0x1000527e
mov dword [esi + 0x178], 0xd
cmp ecx, 0x7fffffee
jae 0x100056c1
add eax, 0x25
push eax
call fcn.10015b56
add esp, 4
mov ecx, eax
add eax, 0x23
and eax, 0xffffffe0
mov dword [eax - 4], ecx
jmp 0x10005294
mov dword [edi + 0x20], 7
mov ebx, edx
or ebx, 7
cmp ebx, 0x7ffffffe
ja 0x100056e4
cmp ebx, 0xb
mov eax, 0xa
cmovb ebx, eax
lea eax, [ebx + ebx]
cmp ebx, 0x7ff
mov dword [esi + 0x10], edx
mov dword [esi + 0x20], ebx
jb 0x1000541d
cmp ebx, 0x7fffffee
jae 0x100056e4
add eax, 0x25
mov dword [esi + 0x178], 7
push eax
call fcn.10015b56
add esp, 4
mov ecx, eax
add eax, 0x23
and eax, 0xffffffe0
mov dword [eax - 4], ecx
jmp 0x10005433
add eax, 2
mov dword [esi + 0x178], 0xd
push eax
call fcn.10015b56
add esp, 4
mov ebx, dword [esi]
mov ecx, dword [esi + 0x14]
mov edx, dword [esi + 0x1c]
mov dword [ecx + 0xc], eax
mov dword [ecx + 0x1c], edx
mov edi, dword [esi + 0x10]
mov dword [ecx + 0x20], edi
lea ecx, [edx + edx + 2]
push ecx
push dword [esi + 0xc]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esi + 0x24]
mov edi, dword [eax + 4]
cmp byte [edi + 0xd], 0
mov dword [esi + 0xc], eax
je 0x100052e0
mov dword [esi + 0x1c], 0
mov ecx, ebx
mov edx, edi
mov edi, dword [esi + 4]
cmp byte [eax + 0xd], 0
jne 0x1000532a
jmp 0x1000531e
mov ebx, edi
mov edx, dword [edi + 0x10]
mov ecx, dword [edi + 0x14]
cmp edx, dword [esi]
mov edi, ecx
sbb edi, dword [esi + 4]
lea edi, [ebx + 8]
cmovge eax, ebx
cmovge edi, ebx
mov edi, dword [edi]
cmp byte [edi + 0xd], 0
je 0x100052e0
mov edi, dword [esi]
cmp edx, edi
mov edx, edi
mov edi, dword [esi + 4]
sbb ecx, edi
setge cl
movzx ecx, cl
mov dword [esi + 0x1c], ecx
mov ecx, edx
mov edx, ebx
cmp byte [eax + 0xd], 0
jne 0x1000532a
mov ebx, ecx
cmp ecx, dword [eax + 0x10]
mov ecx, edi
sbb ecx, dword [eax + 0x14]
jge 0x10005380
mov dword [esi + 0x10], edx
cmp dword [esi + 0x28], 0x7ffffff
mov dword [esi + 0x178], 0xe
je 0x100056bc
push 0x20
call fcn.10015b56
add esp, 4
mov ebx, dword [esi]
mov dword [eax + 0x10], ebx
mov edi, dword [esi + 4]
mov dword [eax + 0x14], edi
mov dword [eax + 0x18], 0
mov ecx, dword [esi + 0xc]
mov dword [eax], ecx
mov dword [eax + 4], ecx
mov dword [eax + 8], ecx
mov word [eax + 0xc], 0
lea ecx, [esi + 0x24]
push eax
push dword [esi + 0x1c]
push dword [esi + 0x10]
call fcn.1000eb40
add eax, 0x18
mov ecx, dword [esi + 0x14]
mov dword [ecx], eax
mov dword [ecx + 4], ebx
mov dword [ecx + 8], edi
mov dword [esi + 0x178], 0xd
call fcn.10005b20
mov esp, dword [esi + 8]
mov eax, dword [esi + 0xa4]
cmp eax, 8
jb 0x100053e3
mov ecx, dword [esi + 0x90]
lea edi, [eax + eax]
add edi, 2
cmp edi, 0x1000
jb 0x100053d9
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x10005693
add eax, eax
add eax, 0x25
mov edi, eax
mov ecx, edx
push edi
push ecx
call fcn.10015b8b
add esp, 8
mov ecx, dword [esi + 0x6c]
test ecx, ecx
je 0x10005650
mov eax, dword [esi + 0x74]
sub eax, ecx
cmp eax, 0x1000
jb 0x10005410
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x10005693
add eax, 0x23
mov ecx, edx
push eax
jmp 0x100055f8
xor ecx, ecx
jmp 0x1000561d
add eax, 2
mov dword [esi + 0x178], 7
push eax
call fcn.10015b56
add esp, 4
mov ebx, dword [esi]
mov ecx, dword [esi + 0x14]
mov dword [ecx + 0xc], eax
mov edx, dword [esi + 0x10]
mov dword [ecx + 0x1c], edx
mov edi, dword [esi + 0x20]
mov dword [ecx + 0x20], edi
lea ecx, [edx + edx + 2]
push ecx
push dword [esi + 8]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esi + 0x24]
mov edi, dword [eax + 4]
cmp byte [edi + 0xd], 0
mov dword [esi + 8], eax
je 0x10005480
mov dword [esi + 0x10], 0
mov ecx, ebx
mov edx, edi
mov edi, dword [esi + 4]
cmp byte [eax + 0xd], 0
jne 0x100054ca
jmp 0x100054be
mov ebx, edi
mov edx, dword [edi + 0x10]
mov ecx, dword [edi + 0x14]
cmp edx, dword [esi]
mov edi, ecx
sbb edi, dword [esi + 4]
lea edi, [ebx + 8]
cmovge eax, ebx
cmovge edi, ebx
mov edi, dword [edi]
cmp byte [edi + 0xd], 0
je 0x10005480
mov edi, dword [esi]
cmp edx, edi
mov edx, edi
mov edi, dword [esi + 4]
sbb ecx, edi
setge cl
movzx ecx, cl
mov dword [esi + 0x10], ecx
mov ecx, edx
mov edx, ebx
cmp byte [eax + 0xd], 0
jne 0x100054ca
mov ebx, ecx
cmp ecx, dword [eax + 0x10]
mov ecx, edi
sbb ecx, dword [eax + 0x14]
jge 0x10005520
mov dword [esi + 0x20], edx
cmp dword [esi + 0x28], 0x7ffffff
mov dword [esi + 0x178], 8
je 0x100056df
push 0x20
call fcn.10015b56
add esp, 4
mov ebx, dword [esi]
mov dword [eax + 0x10], ebx
mov edi, dword [esi + 4]
mov dword [eax + 0x14], edi
mov dword [eax + 0x18], 0
mov ecx, dword [esi + 8]
mov dword [eax], ecx
mov dword [eax + 4], ecx
mov dword [eax + 8], ecx
mov word [eax + 0xc], 0
lea ecx, [esi + 0x24]
push eax
push dword [esi + 0x10]
push dword [esi + 0x20]
call fcn.1000eb40
add eax, 0x18
mov ecx, dword [esi + 0x14]
mov dword [ecx], eax
mov dword [ecx + 4], ebx
mov dword [ecx + 8], edi
mov dword [esi + 0x178], 7
call fcn.10005b20
mov esp, dword [esi + 0xc]
movzx ecx, byte [esi + 0x1c]
mov byte [esi + 0x78], cl
mov eax, dword [esi + 0x58]
cmp eax, dword [esi + 0x5c]
je 0x10005560
mov byte [eax], cl
inc dword [esi + 0x58]
mov dword [esi + 0x178], 7
jmp 0x10005577
mov dword [esi + 0x178], 7
lea ecx, [esi + 0x54]
lea edx, [esi + 0x78]
push edx
push eax
call fcn.1000c030
mov ecx, dword [ebp + 8]
mov eax, dword [ecx]
lea edx, [esi + 0x54]
push edx
call dword [eax]
mov eax, dword [esi + 0x90]
mov eax, dword [eax + 4]
mov dword [esi + eax + 0x90], vtable.std::basic_ifstream_char__struct_std::char_traits_char__.0
mov eax, dword [esi + 0x90]
mov eax, dword [eax + 4]
lea ecx, [eax - 0x70]
mov dword [esi + eax + 0x8c], ecx
lea ecx, [esi + 0xa0]
call fcn.1000b0c0
lea ecx, [esi + 0x100]
call dword [sym.imp.MSVCP140.dll_public_virtual:_void___thiscall_std::ios_base::destructor_void_]
mov eax, dword [esi + 0x44]
cmp eax, 8
jb 0x10005650
mov ecx, dword [esi + 0x30]
lea edi, [eax + eax]
add edi, 2
cmp edi, 0x1000
jb 0x100055f7
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x10005693
add eax, eax
add eax, 0x25
mov edi, eax
mov ecx, edx
push edi
push ecx
call fcn.10015b8b
add esp, 8
jmp 0x10005650
mov eax, dword [esi + 0x64]
movzx eax, word [eax + edi*2]
mov ecx, dword [esi + 8]
mov edx, dword [esi + 0x10]
add ecx, dword [edx + eax*4]
mov dword [esi + 0x178], 2
mov dword [esi + 0x178], 2
lea eax, [esi + 0x38]
push eax
push dword [esi + 0x20]
call ecx
test eax, eax
je 0x10005650
mov dword [esi + 0x178], 0xf
push dword [ebp + 8]
lea ecx, [esi + 0x50]
push ecx
call eax
add esp, 8
nop word [eax + eax]
mov ecx, dword [esi + 0x54]
test ecx, ecx
je 0x10004741
mov eax, dword [esi + 0x5c]
sub eax, ecx
cmp eax, 0x1000
jb 0x10004730
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x10005693
add eax, 0x23
mov ecx, edx
jmp 0x10004730
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
call fcn.1000c160
call fcn.1000c160
call fcn.1000c160
mov dword [esi + 0x178], 0xd
call fcn.10008fe0
call fcn.1000d1a0
call fcn.1000d1a0
mov dword [esi + 0x178], 0xd
call fcn.10008d80
mov dword [esi + 0x178], 7
call fcn.10008fe0
call fcn.1000d1a0
mov dword [esi + 0x178], 7
call fcn.10008d80
lea esi, [ebp - 0x17c]
mov ebp, dword [esi + 0x168]
jmp 0x10005704
mov dword [esi + 0x178], 0
mov ecx, dword [ebp + 8]
call fcn.10002480
mov eax, dword [esi + 0x24]
lea ecx, [esi + 0x24]
push dword [eax + 4]
push ecx
call fcn.1000c170
push 0x20
push dword [esi + 0x24]
call fcn.10015b8b
add esp, 8
mov eax, dword [esi + 0x170]
mov dword fs:[0], eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret