Function at 0x1012e4c0
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x5b0
mov eax, dword [0x102519c8]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
mov ebx, dword [ebp + 0x10]
push esi
mov dword [ebp - 0x530], ecx
lea ecx, [ebp - 0x548]
push edi
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x528], eax
mov dword [ebp - 0x554], ebx
mov dword [ebp - 0x548], 0
mov dword [ebp - 0x544], 0
call fcn.1005ced0
push ebx
lea ecx, [ebp - 0x54c]
mov dword [ebp - 0x548], eax
mov dword [ebp - 0x564], 0
mov dword [ebp - 0x560], 0
mov dword [ebp - 0x55c], 0
call fcn.10002490
mov ebx, dword [ebp - 0x560]
mov esi, dword [ebp - 0x54c]
cmp dword [ebp - 0x55c], ebx
je 0x1012e56e
lea eax, [esi - 0x10]
push eax
call fcn.10002a60
add eax, 0x10
add esp, 4
mov dword [ebx], eax
add dword [ebp - 0x560], 4
jmp 0x1012e581
lea eax, [ebp - 0x54c]
push eax
push ebx
lea ecx, [ebp - 0x564]
call fcn.1001ddd0
or ebx, 0xffffffff
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x1012e59b
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
lea eax, [edi + 1]
push eax
call sub.msvcrt.dll_malloc
add esp, 4
mov dword [ebp - 0x54c], eax
mov dword [ebp - 0x568], 0
test eax, eax
je 0x1012f44f
mov dword [ebp - 0x538], 0
call fcn.10003180
mov esi, dword [eax + 0x154]
test esi, esi
je 0x1012e5df
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push 9
call fcn.10003680
add esp, 4
push 0
test eax, eax
je 0x1012e607
lea ecx, [ebp - 0x538]
push ecx
push edi
push dword [ebp - 0x54c]
push dword [ebp - 0x528]
call eax
jmp 0x1012e621
lea eax, [ebp - 0x538]
push eax
push edi
push dword [ebp - 0x54c]
push dword [ebp - 0x528]
call dword [sym.imp.KERNEL32.dll_ReadFile]
mov dword [ebp - 0x528], eax
test esi, esi
je 0x1012e632
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
cmp dword [ebp - 0x528], 0
je 0x1012f441
mov edx, dword [ebp - 0x54c]
mov esi, edx
mov eax, dword [ebp - 0x538]
mov dword [ebp - 0x528], edx
mov byte [eax + edx], 0
cmp edi, 3
jb 0x1012e742
cmp byte [edx], 0xef
jne 0x1012e742
cmp byte [edx + 1], 0xbb
jne 0x1012e742
cmp byte [edx + 2], 0xbf
jne 0x1012e742
mov eax, dword [ebp - 0x538]
mov ecx, dword [ebp - 0x530]
add eax, 0xfffffffd
push eax
lea eax, [edx + 3]
mov dword [ebp - 0x3f8], 0
push eax
mov dword [ecx + 0x25c], 1
lea ecx, [ebp - 0x408]
mov dword [ebp - 0x3f4], 0xf
mov byte [ebp - 0x408], 0
call fcn.10006fc0
lea eax, [ebp - 0x408]
push eax
lea eax, [ebp - 0x420]
push eax
call fcn.10007950
add esp, 8
lea ecx, [ebp - 0x408]
call fcn.1000c070
mov eax, dword [ebp - 0x410]
mov dword [ebp - 0x538], eax
inc eax
push eax
call sub.msvcrt.dll_malloc
add esp, 4
lea edx, [ebp - 0x420]
cmp dword [ebp - 0x40c], 0x10
mov esi, eax
mov dword [ebp - 0x568], esi
jb 0x1012e715
mov edx, dword [ebp - 0x420]
mov ecx, dword [ebp - 0x538]
inc ecx
push ecx
push edx
push esi
call sub.msvcrt.dll_memcpy
mov eax, dword [ebp - 0x538]
lea ecx, [ebp - 0x420]
add esp, 0xc
mov dword [ebp - 0x528], esi
mov byte [eax + esi], 0
call fcn.1000c070
mov edi, dword [ebp - 0x538]
lea eax, [ebp - 0x3f0]
push 0x3ec
push 0
push eax
mov dword [ebp - 0x534], 0
add edi, esi
call sub.msvcrt.dll_memset
add esp, 0xc
test esi, esi
mov esi, dword [ebp - 0x530]
je 0x1012ea68
jmp 0x1012e780
lea eax, [ebp - 0x534]
mov ecx, esi
push eax
lea eax, [ebp - 0x3f0]
push eax
push edi
lea eax, [ebp - 0x528]
push eax
call fcn.10130920
test eax, eax
je 0x1012e809
lea eax, [ebp - 0x548]
push eax
push ecx
mov esi, esp
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
add eax, 0x10
mov ecx, esi
mov dword [esi], eax
lea eax, [ebp - 0x3f0]
push eax
call fcn.1012c930
test al, al
jne 0x1012e7ef
lea ecx, [ebp - 0x3f0]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1012e7d7
sub ecx, edx
lea eax, [ebp - 0x3f0]
push ecx
push eax
mov ecx, esi
call fcn.10131360
mov esi, dword [ebp - 0x530]
mov ecx, esi
call fcn.1012f4c0
cmp dword [ebp - 0x528], 0
jne 0x1012e780
cmp dword [ebp - 0x534], 0
je 0x1012ea68
push 1
push 0
push ecx
mov esi, esp
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
add eax, 0x10
mov ecx, esi
push 0x10202940
mov dword [esi], eax
call fcn.10023e80
test al, al
jne 0x1012e84c
push 0
push 0x10202940
mov ecx, esi
call fcn.10003740
push 1
push 0xffffffffffffffff
push 0xffffffffffffffff
push ecx
mov esi, esp
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
add eax, 0x10
mov ecx, esi
push 0x10202940
mov dword [esi], eax
call fcn.10023e80
test al, al
jne 0x1012e884
push 0
push 0x10202940
mov ecx, esi
call fcn.10003740
push ecx
mov esi, esp
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
add eax, 0x10
mov ecx, esi
push 0x10202940
mov dword [esi], eax
call fcn.10023e80
test al, al
jne 0x1012e8b6
push 0
push 0x10202940
mov ecx, esi
call fcn.10003740
push ecx
mov esi, esp
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
add eax, 0x10
mov ecx, esi
push 0x10202940
mov dword [esi], eax
call fcn.10023e80
test al, al
jne 0x1012e8e8
push 0
push 0x10202940
mov ecx, esi
call fcn.10003740
mov edi, dword [ebp - 0x530]
mov esi, dword [edi + 0xc]
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
add eax, 0x10
lea ecx, [ebp - 0x528]
push 0x2807
mov dword [ebp - 0x528], eax
call fcn.10023e80
test al, al
jne 0x1012e942
mov ecx, 0x2807
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x1012e922
sub ecx, edx
sar ecx, 1
push ecx
push 0x2807
lea ecx, [ebp - 0x528]
call fcn.10003740
mov ecx, dword [edi + 0x26c]
lea eax, [ebp - 0x564]
push 0
push 0xffffffffffffffff
push 4
push 0
push eax
push 1
push esi
mov esi, dword [ebp - 0x528]
push esi
push dword [edi + 4]
push dword [edi]
call fcn.100cd930
mov dword [ebp - 0x550], eax
add esi, 0xfffffff0
lock xadd dword [esi + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x1012e986
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
push ecx
mov edi, esp
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
add eax, 0x10
mov ecx, edi
push 0x10202940
mov dword [edi], eax
call fcn.1012c930
test al, al
jne 0x1012ea10
mov ebx, dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
push 0
push 0
push 0
push 0
push 0xffffffffffffffff
push 0x10202940
push 0
push 3
call ebx
lea esi, [eax - 1]
test esi, esi
jle 0x1012ea09
mov edx, dword [edi]
mov ecx, 1
mov eax, dword [edx - 8]
sub ecx, dword [edx - 4]
sub eax, esi
or eax, ecx
jge 0x1012e9e9
push esi
mov ecx, edi
call fcn.1005ce30
mov edx, dword [edi]
push 0
push 0
push esi
push edx
push 0xffffffffffffffff
push 0x10202940
push 0
push 3
call ebx
mov eax, dword [edi]
mov dword [eax - 0xc], esi
mov eax, dword [edi]
mov byte [esi + eax], 0
jmp 0x1012ea10
mov ecx, edi
call fcn.1012d310
push ecx
mov esi, esp
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
add eax, 0x10
mov ecx, esi
push 0x10202940
mov dword [esi], eax
call fcn.10023e80
test al, al
jne 0x1012ea42
push 0
push 0x10202940
mov ecx, esi
call fcn.10003740
push ecx
mov ecx, esp
push dword [ebp - 0x554]
call fcn.10002490
mov ecx, dword [ebp - 0x530]
push 3
push dword [ebp - 0x550]
call fcn.1012cf00
jmp 0x1012f42e
cmp dword [ebp - 0x544], 0xa
mov eax, dword [ebp - 0x548]
mov edi, dword [eax]
mov dword [ebp - 0x528], edi
jbe 0x1012ebd2
mov eax, dword [esi + 0xc]
lea ecx, [ebp - 0x540]
push 0x2807
mov dword [ebp - 0x550], eax
call fcn.10002490
push 1
push 0
push ecx
mov esi, dword [eax]
mov ecx, esp
mov eax, dword [ebp - 0x530]
push 0x10202940
mov ebx, dword [eax + 4]
mov eax, dword [eax]
mov dword [ebp - 0x534], eax
call fcn.10002490
push 1
push 0xffffffffffffffff
push 0xffffffffffffffff
push ecx
mov ecx, esp
push 0x10202940
call fcn.10002490
push ecx
mov ecx, esp
push 0x10202940
call fcn.10002490
push ecx
mov ecx, esp
push 0x10202940
call fcn.10002490
push 0
push 0xffffffffffffffff
push 4
push 0
lea eax, [ebp - 0x564]
push eax
push 1
push dword [ebp - 0x550]
push esi
mov esi, dword [ebp - 0x530]
push ebx
push dword [ebp - 0x534]
mov ecx, dword [esi + 0x26c]
call fcn.100cd930
mov edx, dword [ebp - 0x540]
mov ebx, eax
add edx, 0xfffffff0
or ecx, 0xffffffff
lock xadd dword [edx + 0xc], ecx
dec ecx
test ecx, ecx
jg 0x1012eb3d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [esi + 0x258], 1
cmp edi, dword [ebp - 0x548]
je 0x1012f42e
mov eax, dword [edi + 0x10]
push ecx
sub eax, 0x10
mov esi, esp
push eax
call fcn.1012ca20
add eax, 0x10
mov dword [esi], eax
mov esi, esp
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
add eax, 0x10
mov ecx, esi
push 0x10202940
mov dword [esi], eax
call fcn.10023e80
test al, al
jne 0x1012eb98
push 0
push 0x10202940
mov ecx, esi
call fcn.10003740
push ecx
mov ecx, esp
push dword [ebp - 0x554]
call fcn.10002490
mov ecx, dword [ebp - 0x530]
push 2
push ebx
call fcn.1012cf00
lea ecx, [ebp - 0x528]
call fcn.10014d60
mov edi, dword [ebp - 0x528]
cmp edi, dword [ebp - 0x548]
jne 0x1012eb53
jmp 0x1012f42e
cmp edi, eax
je 0x1012f42e
lea ebx, [ebx]
mov esi, dword [edi + 0x14]
mov eax, dword [esi]
sub eax, 0x10
push eax
call fcn.1012ca20
add eax, 0x10
mov dword [ebp - 0x3fc], eax
mov eax, dword [esi + 4]
sub eax, 0x10
push eax
call fcn.10002a60
add eax, 0x10
add esp, 8
mov dword [ebp - 0x3f8], eax
mov eax, dword [esi + 8]
mov dword [ebp - 0x558], eax
mov dword [ebp - 0x3f4], eax
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
add eax, 0x10
lea ecx, [ebp - 0x53c]
push 0x10202940
mov dword [ebp - 0x53c], eax
call fcn.10023e80
test al, al
jne 0x1012ec59
push 0
push 0x10202940
lea ecx, [ebp - 0x53c]
call fcn.10003740
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
add eax, 0x10
lea ecx, [ebp - 0x540]
push 0x10202940
mov dword [ebp - 0x540], eax
call fcn.10023e80
test al, al
jne 0x1012ec94
push 0
push 0x10202940
lea ecx, [ebp - 0x540]
call fcn.10003740
mov ecx, dword [edi + 0x18]
mov eax, 0x2aaaaaab
sub ecx, dword [edi + 0x14]
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 1
jbe 0x1012eedc
lea eax, [ebp - 0x3f8]
push 0x10202940
push eax
call fcn.10033f60
add esp, 8
test al, al
je 0x1012ed59
lea eax, [ebp - 0x3f8]
push eax
push 0x10202940
lea ecx, [ebp - 0x574]
call fcn.10002490
push eax
lea eax, [ebp - 0x570]
push 0x9c91
push eax
call fcn.100053d0
add esp, 0xc
push eax
lea eax, [ebp - 0x56c]
push eax
call fcn.10007e90
add esp, 0xc
lea ecx, [ebp - 0x53c]
push eax
call fcn.10002790
mov edx, dword [ebp - 0x56c]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1012ed34
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x570]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1012ed51
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x574]
jmp 0x1012edad
push 0x10202940
lea ecx, [ebp - 0x5ac]
call fcn.10002490
push eax
lea eax, [ebp - 0x578]
push 0x9c92
push eax
call fcn.100053d0
add esp, 0xc
lea ecx, [ebp - 0x53c]
push eax
call fcn.10002790
mov edx, dword [ebp - 0x578]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1012eda7
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x5ac]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1012edc4
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
add eax, 0x10
lea ecx, [ebp - 0x534]
push 0x10202940
mov dword [ebp - 0x534], eax
call fcn.10023e80
test al, al
jne 0x1012edff
push 0
push 0x10202940
lea ecx, [ebp - 0x534]
call fcn.10003740
push dword [edi + 0x10]
lea ecx, [ebp - 0x524]
call fcn.1006af90
mov esi, dword [eax]
lea eax, [ebp - 0x534]
push eax
lea eax, [ebp - 0x5b0]
push 0x9c93
push eax
call fcn.100053d0
add esp, 0xc
push eax
mov eax, dword [ebp - 0x530]
add eax, 8
push esi
push eax
lea eax, [ebp - 0x5a4]
push eax
call fcn.10007f40
add esp, 0xc
push eax
lea eax, [ebp - 0x5a8]
push eax
call fcn.10007e90
add esp, 0xc
lea ecx, [ebp - 0x540]
push eax
call fcn.10002790
mov edx, dword [ebp - 0x5a8]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1012ee7e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x5a4]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1012ee9b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x524]
lea ecx, [ebp - 0x520]
cmp eax, ecx
je 0x1012eeb4
push eax
call sub.msvcrt.dll_free
add esp, 4
mov edx, dword [ebp - 0x5b0]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1012eed1
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x534]
jmp 0x1012f199
lea eax, [ecx - 0xc]
cmp eax, 0xc
jae 0x1012f1b0
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
mov esi, dword [ebp - 0x3fc]
lea ecx, [ebp - 0x52c]
add eax, 0x10
push esi
mov dword [ebp - 0x52c], eax
call fcn.10023e80
test al, al
jne 0x1012ef1f
push esi
lea ecx, [ebp - 0x52c]
call fcn.10033bf0
mov esi, dword [ebp - 0x52c]
cmp dword [esi - 0xc], 0
jge 0x1012ef30
or eax, 0xffffffff
jmp 0x1012ef4b
push 0x10205494
push esi
call sub.msvcrt.dll_wcsstr
add esp, 8
test eax, eax
jne 0x1012ef47
or eax, 0xffffffff
jmp 0x1012ef4b
sub eax, esi
sar eax, 1
lea ecx, [eax + 1]
mov eax, dword [esi - 0xc]
sub eax, ecx
push eax
push ecx
lea eax, [ebp - 0x550]
push eax
lea ecx, [ebp - 0x52c]
call fcn.10006530
lea eax, [ebp - 0x550]
push eax
lea ecx, [ebp - 0x52c]
call fcn.10002790
mov edx, dword [ebp - 0x550]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1012ef96
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea eax, [ebp - 0x3f8]
push 0x10202940
push eax
call fcn.10033f60
add esp, 8
test al, al
je 0x1012efdf
lea eax, [ebp - 0x3f8]
push eax
lea eax, [ebp - 0x52c]
push eax
lea eax, [ebp - 0x57c]
push eax
call fcn.10007e90
add esp, 0xc
lea ecx, [ebp - 0x53c]
push eax
call fcn.10002790
lea ecx, [ebp - 0x57c]
jmp 0x1012f040
push 0x10202940
lea ecx, [ebp - 0x588]
call fcn.10002490
push eax
lea eax, [ebp - 0x584]
push 0x9c94
push eax
call fcn.100053d0
push eax
lea eax, [ebp - 0x52c]
push eax
lea eax, [ebp - 0x580]
push eax
call fcn.10007e90
add esp, 0x18
lea ecx, [ebp - 0x53c]
push eax
call fcn.10002790
lea ecx, [ebp - 0x580]
call fcn.10007e10
lea ecx, [ebp - 0x584]
call fcn.10007e10
lea ecx, [ebp - 0x588]
call fcn.10007e10
push dword [edi + 0x10]
lea ecx, [ebp - 0x524]
call fcn.1006af90
push 0x9c96
lea ecx, [ebp - 0x5a0]
mov esi, dword [eax]
call fcn.10002490
push eax
push esi
push 0x10202940
lea ecx, [ebp - 0x59c]
call fcn.10002490
push eax
lea eax, [ebp - 0x598]
push 0x9c95
push eax
call fcn.100053d0
push eax
lea eax, [ebp - 0x52c]
push eax
lea eax, [ebp - 0x594]
push eax
call fcn.10007e90
add esp, 0x18
push eax
lea eax, [ebp - 0x590]
push eax
call fcn.10007f40
add esp, 0xc
push eax
lea eax, [ebp - 0x58c]
push eax
call fcn.10007e90
add esp, 0xc
lea ecx, [ebp - 0x540]
push eax
call fcn.10002790
mov edx, dword [ebp - 0x58c]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1012f0e9
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x590]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1012f106
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x594]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1012f123
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x598]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1012f140
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x59c]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1012f15d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x524]
lea ecx, [ebp - 0x520]
cmp eax, ecx
je 0x1012f176
push eax
call sub.msvcrt.dll_free
add esp, 4
mov edx, dword [ebp - 0x5a0]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1012f193
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x52c]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1012f1b0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push 1
push 0
push ecx
mov esi, esp
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
add eax, 0x10
mov ecx, esi
push 0x10202940
mov dword [esi], eax
call fcn.10023e80
test al, al
jne 0x1012f1e6
push 0
push 0x10202940
mov ecx, esi
call fcn.10003740
push 1
push 0xffffffffffffffff
push 0xffffffffffffffff
push ecx
mov esi, esp
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
add eax, 0x10
mov ecx, esi
push 0x10202940
mov dword [esi], eax
call fcn.10023e80
test al, al
jne 0x1012f21e
push 0
push 0x10202940
mov ecx, esi
call fcn.10003740
push ecx
mov esi, esp
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
add eax, 0x10
mov ecx, esi
push 0x10202940
mov dword [esi], eax
call fcn.10023e80
test al, al
jne 0x1012f250
push 0
push 0x10202940
mov ecx, esi
call fcn.10003740
push ecx
mov esi, esp
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
add eax, 0x10
mov ecx, esi
push 0x10202940
mov dword [esi], eax
call fcn.10023e80
test al, al
jne 0x1012f282
push 0
push 0x10202940
mov ecx, esi
call fcn.10003740
mov eax, dword [ebp - 0x530]
mov esi, dword [eax + 0xc]
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
add eax, 0x10
lea ecx, [ebp - 0x52c]
push 0x2807
mov dword [ebp - 0x52c], eax
call fcn.10023e80
test al, al
jne 0x1012f2e0
mov ecx, 0x2807
lea edx, [ecx + 2]
lea esp, [esp]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x1012f2c0
sub ecx, edx
sar ecx, 1
push ecx
push 0x2807
lea ecx, [ebp - 0x52c]
call fcn.10003740
push 0
push 0xffffffffffffffff
push dword [ebp - 0x558]
lea eax, [ebp - 0x564]
push 0
push eax
mov eax, dword [ebp - 0x530]
push 1
push esi
mov esi, dword [ebp - 0x52c]
mov ecx, dword [eax + 0x26c]
push esi
push dword [ebp - 0x540]
push dword [ebp - 0x53c]
call fcn.100cd930
mov dword [ebp - 0x558], eax
add esi, 0xfffffff0
mov ecx, ebx
lock xadd dword [esi + 0xc], ecx
dec ecx
test ecx, ecx
jg 0x1012f337
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [edi + 0x10]
push ecx
sub eax, 0x10
mov esi, esp
push eax
call fcn.1012ca20
add eax, 0x10
mov dword [esi], eax
mov esi, esp
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
add eax, 0x10
mov ecx, esi
push 0x10202940
mov dword [esi], eax
call fcn.10023e80
test al, al
jne 0x1012f37c
push 0
push 0x10202940
mov ecx, esi
call fcn.10003740
push ecx
mov ecx, esp
push dword [ebp - 0x554]
call fcn.10002490
mov ecx, dword [ebp - 0x530]
push 2
push dword [ebp - 0x558]
call fcn.1012cf00
mov edx, dword [ebp - 0x540]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1012f3ba
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x53c]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1012f3d7
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x3f8]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1012f3f4
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x3fc]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1012f411
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0x528]
call fcn.10014d60
mov edi, dword [ebp - 0x528]
cmp edi, dword [ebp - 0x548]
jne 0x1012ebe0
mov eax, dword [ebp - 0x568]
test eax, eax
je 0x1012f441
push eax
call sub.msvcrt.dll_free
add esp, 4
push dword [ebp - 0x54c]
call sub.msvcrt.dll_free
add esp, 4
lea ecx, [ebp - 0x564]
call fcn.1002a3c0
mov esi, dword [ebp - 0x548]
lea ecx, [ebp - 0x548]
push dword [esi + 4]
call fcn.10131950
mov eax, dword [ebp - 0x548]
push 0x20
mov dword [eax + 4], esi
mov eax, dword [ebp - 0x548]
mov dword [eax], esi
mov eax, dword [ebp - 0x548]
mov dword [eax + 8], esi
push dword [ebp - 0x548]
mov dword [ebp - 0x544], 0
call sub.msvcrt.dll_void___cdecl_operator_delete_void__
mov ecx, dword [ebp - 4]
add esp, 8
xor ecx, ebp
pop edi
pop esi
pop ebx
call fcn.101f99c6
mov esp, ebp
pop ebp
ret 0xc