Function at 0x5099b0
Capabilities:
Create thread
Get common file path
Get file size
Terminate thread
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x555f7d
mov eax, dword fs:[0]
push eax
sub esp, 0x52c
mov eax, dword [0x5c2b80]
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 edi, ecx
mov dword [ebp - 0x4b8], edi
mov dword [ebp - 4], 0
mov dword [ebp - 0x4d0], edi
mov esi, dword [ebp + 8]
mov dword [ebp - 0x4b0], esi
mov dword [ebp - 0x4d8], esi
mov ebx, dword [ebp + 0xc]
mov dword [ebp - 0x4c0], ebx
mov dword [ebp - 0x4cc], ebx
mov dword [ebp - 0x4d4], 0
mov dword [esi], 0
call fcn.00456bd0
mov ecx, eax
xor eax, eax
test ecx, ecx
setne al
test eax, eax
jne 0x509a40
push 0x80004005
call fcn.00456ea0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [esi], eax
mov dword [ebp - 4], 0
mov dword [ebp - 0x4d4], 1
call fcn.00456bd0
mov ecx, eax
xor eax, eax
test ecx, ecx
setne al
test eax, eax
jne 0x509a77
push 0x80004005
call fcn.00456ea0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x24c], eax
mov dword [ebp - 4], 3
mov eax, dword [edi + 4]
cmp eax, dword [edi + 8]
jne 0x509b3e
mov ecx, 0x5a4520
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x4b4]
call fcn.00457210
mov byte [ebp - 4], 4
mov ecx, dword [eax]
lea edx, [ecx - 0x10]
mov esi, dword [ebx]
sub esi, 0x10
cmp edx, esi
je 0x509b0f
lea edi, [esi + 0xc]
cmp dword [edi], 0
jl 0x509b04
mov eax, dword [edx]
cmp eax, dword [esi]
jne 0x509b04
mov ecx, edx
call fcn.00456280
mov dword [ebp - 0x224], eax
or ebx, 0xffffffff
mov eax, ebx
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x509af1
mov ecx, dword [esi]
mov eax, dword [ecx]
push esi
call dword [eax + 4]
mov eax, dword [ebp - 0x224]
add eax, 0x10
mov ecx, dword [ebp - 0x4c0]
mov dword [ecx], eax
jmp 0x509b12
push dword [ecx - 0xc]
push ecx
mov ecx, ebx
call fcn.004573c0
or ebx, 0xffffffff
mov byte [ebp - 4], 3
mov edx, dword [ebp - 0x4b4]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50bbc9
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
jmp 0x50bbc9
xorps xmm0, xmm0
movq qword [ebp - 0x244], xmm0
mov dword [ebp - 0x23c], 0
mov eax, dword [edi + 8]
sub eax, dword [edi + 4]
sar eax, 2
push eax
lea ecx, [ebp - 0x244]
call fcn.0051b3e0
mov byte [ebp - 4], 6
mov ecx, dword [ebp - 0x240]
mov ebx, dword [ebp - 0x244]
sub ecx, ebx
sar ecx, 2
test ecx, ecx
je 0x509b8d
xor eax, eax
mov edi, ebx
rep stosd dword es:[edi], eax
mov edi, dword [ebp - 0x4b8]
xorps xmm0, xmm0
movq qword [ebp - 0x238], xmm0
mov dword [ebp - 0x230], 0
mov eax, dword [edi + 8]
sub eax, dword [edi + 4]
sar eax, 2
push eax
lea ecx, [ebp - 0x238]
call fcn.0051bf80
mov byte [ebp - 4], 7
xor cl, cl
mov byte [ebp - 0x4a9], cl
mov byte [ebp - 4], 8
xor esi, esi
mov dword [ebp - 0x4e0], esi
nop
mov eax, dword [edi + 8]
sub eax, dword [edi + 4]
sar eax, 2
cmp esi, eax
jae 0x509e4a
mov dword [ebp - 0x224], 0
lea edi, [esi*4]
mov ecx, dword [ebp - 0x4b8]
mov edx, dword [ecx + 4]
add edx, edi
lea ecx, [ebp - 0x538]
call fcn.00457010
mov byte [ebp - 4], 9
push eax
lea ecx, [ebp - 0x508]
call fcn.00468d50
mov byte [ebp - 4], 0xa
mov ebx, esi
shl ebx, 5
mov ecx, dword [ebp - 0x238]
add ebx, ecx
lea eax, [ebp - 0x508]
push eax
push ecx
push 0x592834
mov ecx, ebx
call fcn.004698b0
mov ecx, eax
call fcn.00469060
mov byte [ebp - 4], 9
lea ecx, [ebp - 0x508]
call fcn.00468f90
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x538]
call fcn.00455f00
mov ecx, dword [ebp - 0x4b8]
mov eax, dword [ecx + 0x10]
cmp eax, dword [ecx + 0x14]
je 0x509ccb
lea edx, [edi + eax]
lea ecx, [ebp - 0x520]
call fcn.00457010
mov byte [ebp - 4], 0xb
push eax
lea ecx, [ebp - 0x4f8]
call fcn.00468d50
mov byte [ebp - 4], 0xc
lea eax, [ebp - 0x4f8]
push eax
push ecx
push str.fallbackurl
mov ecx, ebx
call fcn.004698b0
mov ecx, eax
call fcn.00469060
mov byte [ebp - 4], 0xb
lea ecx, [ebp - 0x4f8]
call fcn.00468f90
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x520]
call fcn.00455f00
lea eax, [ebp - 0x224]
push eax
push 0
push ebx
push 0x4f99f0
push 0
push 0
call fcn.0052d319
add esp, 0x18
mov ebx, dword [ebp - 0x244]
mov dword [ebx + edi], eax
cmp eax, 0xffffffff
jne 0x509e32
mov ecx, 0x5a4580
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x4b4]
call fcn.00457210
mov byte [ebp - 4], 0xd
push eax
push 0x10e
mov ecx, dword [ebp - 0x4b8]
call fcn.00513840
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x4b4]
call fcn.00456040
mov ecx, 0x5a45d0
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x4a4]
call fcn.00457210
mov byte [ebp - 4], 0xe
mov eax, dword [eax]
lea esi, [eax - 0x10]
mov edx, dword [ebp - 0x4c0]
mov edi, dword [edx]
sub edi, 0x10
cmp esi, edi
je 0x509e10
cmp dword [edi + 0xc], 0
jl 0x509e05
mov ecx, dword [esi]
cmp ecx, dword [edi]
jne 0x509e05
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
lea edx, [esi + 0xc]
cmp dword [edx], 0
jl 0x509d96
cmp ecx, dword [esi]
jne 0x509d96
mov eax, 1
lock xadd dword [edx], eax
jmp 0x509ddf
mov eax, dword [ecx]
push 2
push dword [esi + 4]
call dword [eax]
mov edx, eax
mov dword [ebp - 0x4b4], edx
test edx, edx
jne 0x509db0
call fcn.00456de0
mov eax, dword [esi + 4]
mov dword [edx + 4], eax
mov ecx, dword [esi + 4]
lea eax, [ecx*2 + 2]
push eax
lea eax, [esi + 0x10]
push eax
lea eax, [ecx*2 + 2]
push eax
lea eax, [edx + 0x10]
push eax
call fcn.0052b264
add esp, 0x10
mov esi, dword [ebp - 0x4b4]
or ebx, 0xffffffff
mov eax, ebx
lea ecx, [edi + 0xc]
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x509df8
mov ecx, dword [edi]
mov eax, dword [ecx]
push edi
call dword [eax + 4]
lea eax, [esi + 0x10]
mov ecx, dword [ebp - 0x4c0]
mov dword [ecx], eax
jmp 0x509e13
push dword [eax - 0xc]
push eax
mov ecx, edx
call fcn.004573c0
or ebx, 0xffffffff
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x4a4]
call fcn.00456040
mov cl, 1
mov byte [ebp - 0x4c2], cl
mov edi, dword [ebp - 0x4b8]
jmp 0x509e4d
inc esi
mov dword [ebp - 0x4e0], esi
mov cl, byte [ebp - 0x4a9]
mov edi, dword [ebp - 0x4b8]
jmp 0x509bd0
or ebx, 0xffffffff
mov dword [ebp - 4], 7
test cl, cl
jne 0x50bac2
mov ecx, 0x5a4810
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x224]
call fcn.00457210
mov byte [ebp - 4], 0x17
push eax
push 0x10e
mov ecx, edi
call fcn.00513840
mov byte [ebp - 4], 7
mov edx, dword [ebp - 0x224]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x509ea6
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov dword [ebp - 0x4c8], 0x118
mov byte [ebp - 0x4c1], 0
xor esi, esi
mov edi, dword [ebp - 0x240]
mov eax, dword [ebp - 0x244]
sub edi, eax
sar edi, 2
lea ebx, [ebx]
push 0xea60
push 1
push eax
push edi
call dword [sym.imp.KERNEL32.dll_WaitForMultipleObjects]
mov dword [ebp - 0x4bc], eax
call fcn.00456bd0
mov ecx, eax
xor eax, eax
test ecx, ecx
setne al
test eax, eax
je 0x509a36
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x22c], eax
mov byte [ebp - 4], 0x1c
mov byte [ebp - 0x4a9], 0
mov eax, dword [ebp - 0x4bc]
cmp eax, 0x102
jne 0x509f79
mov ecx, 0x5a48c0
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x224]
call fcn.00457210
mov byte [ebp - 4], 0x1d
push esi
push dword [eax]
lea eax, [ebp - 0x22c]
push eax
call fcn.00457480
add esp, 0xc
mov byte [ebp - 4], 0x1c
mov edx, dword [ebp - 0x224]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50a031
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
jmp 0x50a031
cmp eax, edi
ja 0x509fd5
mov ecx, 0x5a4960
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x4b4]
call fcn.00457210
mov byte [ebp - 4], 0x21
push esi
push dword [eax]
lea eax, [ebp - 0x22c]
push eax
call fcn.00457480
add esp, 0xc
mov byte [ebp - 4], 0x1c
mov edx, dword [ebp - 0x4b4]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x509fcc
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 0x4a9], 1
jmp 0x50a031
mov ecx, 0x5a4910
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x4a4]
call fcn.00457210
mov byte [ebp - 4], 0x1f
push dword [ebp - 0x4bc]
push esi
push dword [eax]
lea eax, [ebp - 0x22c]
push eax
call fcn.00457480
add esp, 0x10
mov byte [ebp - 4], 0x1c
mov edx, dword [ebp - 0x4a4]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50a02a
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 0x4c1], 1
lea eax, [ebp - 0x22c]
push eax
push dword [ebp - 0x4c8]
mov ecx, dword [ebp - 0x4b8]
call fcn.00513840
cmp byte [ebp - 0x4a9], 0
jne 0x50a096
cmp byte [ebp - 0x4c1], 0
jne 0x50a096
inc dword [ebp - 0x4c8]
mov byte [ebp - 4], 7
mov edx, dword [ebp - 0x22c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50a084
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
inc esi
cmp esi, 0xf
mov eax, dword [ebp - 0x244]
jl 0x509ed0
jmp 0x50a0b9
mov byte [ebp - 4], 7
mov edx, dword [ebp - 0x22c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50a0b9
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
cmp dword [ebp - 0x4bc], 0x102
je 0x50b744
cmp byte [ebp - 0x4c1], 0
jne 0x50b744
xor edi, edi
mov dword [ebp - 0x4bc], edi
mov ecx, dword [ebp - 0x234]
mov eax, dword [ebp - 0x238]
sub ecx, eax
sar ecx, 5
mov dword [ebp - 0x4c8], ecx
test ecx, ecx
je 0x50a2d3
mov esi, eax
mov dword [ebp - 0x4a4], eax
push ecx
push str.error
mov ecx, esi
call fcn.004698b0
cmp byte [eax + 8], 4
jne 0x50a266
call fcn.00456bd0
mov ecx, eax
xor eax, eax
test ecx, ecx
setne al
test eax, eax
je 0x509a36
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x22c], esi
mov byte [ebp - 4], 0x30
mov eax, str.success
test eax, 0xffff0000
jne 0x50a174
movzx esi, ax
mov ecx, esi
call fcn.00456820
test eax, eax
je 0x50a230
push esi
push eax
lea ecx, [ebp - 0x22c]
call fcn.00456700
jmp 0x50a230
push 0
push 0
push 0xffffffffffffffff
push str.success
push 0
push 3
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
lea edi, [eax - 1]
test edi, edi
jle 0x50a1e0
mov ecx, 1
sub ecx, dword [esi - 4]
mov eax, dword [esi - 8]
sub eax, edi
or eax, ecx
jge 0x50a1b3
push edi
lea ecx, [ebp - 0x22c]
call fcn.00456e30
mov esi, dword [ebp - 0x22c]
push edi
push esi
push 0xffffffffffffffff
push str.success
push 0
push 3
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
cmp edi, dword [esi - 8]
jg 0x50a1d6
mov dword [esi - 0xc], edi
xor eax, eax
mov word [esi + edi*2], ax
jmp 0x50a22a
push 0x80070057
call fcn.00456ea0
lea edx, [esi - 0x10]
mov edi, dword [edx]
cmp dword [edx + 4], 0
je 0x50a22a
lea ecx, [edx + 0xc]
cmp dword [ecx], 0
jge 0x50a207
cmp dword [esi - 8], 0
jl 0x50a1d6
mov dword [esi - 0xc], 0
xor eax, eax
mov word [esi], ax
jmp 0x50a22a
mov eax, ebx
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x50a21a
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x22c], eax
mov edi, dword [ebp - 0x4bc]
mov byte [ebp - 4], 0x31
or dword [ebp - 0x4d4], 2
push ecx
push str.error
mov esi, dword [ebp - 0x4a4]
mov ecx, esi
call fcn.004698b0
lea edx, [ebp - 0x22c]
mov ecx, dword [eax]
call fcn.0051b1a0
test al, al
mov byte [ebp - 0x4a9], 0
je 0x50a26d
mov byte [ebp - 0x4a9], 1
mov dword [ebp - 4], 7
mov eax, dword [ebp - 0x4d4]
test al, 2
je 0x50a2aa
and eax, 0xfffffffd
mov dword [ebp - 0x4d4], eax
mov byte [ebp - 4], 7
mov edx, dword [ebp - 0x22c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50a2aa
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
cmp byte [ebp - 0x4a9], 0
jne 0x50a37d
inc edi
mov dword [ebp - 0x4bc], edi
add esi, 0x20
mov dword [ebp - 0x4a4], esi
cmp edi, dword [ebp - 0x4c8]
jb 0x50a105
mov ecx, 0x5a4b70
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x224]
call fcn.00457210
mov byte [ebp - 4], 0x3c
push eax
push 0x136
mov ecx, dword [ebp - 0x4b8]
call fcn.00513840
mov byte [ebp - 4], 7
mov edx, dword [ebp - 0x224]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50a321
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
xor eax, eax
mov word [ebp - 0x220], ax
push 0x206
push eax
lea eax, [ebp - 0x21e]
push eax
call fcn.0052ebd0
add esp, 0xc
lea eax, [ebp - 0x220]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
mov esi, eax
mov dword [ebp - 0x228], 0
call fcn.00456bd0
mov ecx, eax
xor eax, eax
test ecx, ecx
setne al
test eax, eax
jne 0x50a563
push 0x80004005
call fcn.00456ea0
shl edi, 5
add edi, dword [ebp - 0x238]
push ecx
push str.error
mov ecx, edi
call fcn.004698b0
mov ecx, eax
sub esp, 0x18
mov eax, esp
mov dword [ebp - 0x4a8], esp
push eax
call fcn.00469150
mov byte [ebp - 4], 0x33
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x4c8]
call fcn.00456f70
add esp, 0x18
mov esi, eax
mov byte [ebp - 4], 0x34
mov ecx, 0x5a4aa0
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x4cc]
call fcn.00457210
mov byte [ebp - 4], 0x35
push esi
mov edx, eax
lea ecx, [ebp - 0x4a4]
call fcn.0045bbe0
add esp, 4
mov byte [ebp - 4], 0x36
mov edx, dword [eax]
lea esi, [edx - 0x10]
mov edi, dword [ebp - 0x4c0]
mov eax, dword [edi]
sub eax, 0x10
mov dword [ebp - 0x4b4], eax
cmp esi, eax
je 0x50a4c0
lea ecx, [eax + 0xc]
mov dword [ebp - 0x224], ecx
cmp dword [ecx], 0
jl 0x50a4b5
mov ecx, dword [esi]
cmp ecx, dword [eax]
jne 0x50a4b5
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
lea edx, [esi + 0xc]
cmp dword [edx], 0
jl 0x50a44c
cmp ecx, dword [esi]
jne 0x50a44c
mov edi, esi
mov eax, 1
lock xadd dword [edx], eax
inc eax
jmp 0x50a489
mov eax, dword [ecx]
push 2
push dword [esi + 4]
call dword [eax]
mov edi, eax
test edi, edi
jne 0x50a460
call fcn.00456de0
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov ecx, dword [esi + 4]
lea eax, [ecx*2 + 2]
push eax
lea eax, [esi + 0x10]
push eax
lea eax, [ecx*2 + 2]
push eax
lea eax, [edi + 0x10]
push eax
call fcn.0052b264
add esp, 0x10
mov eax, ebx
mov ecx, dword [ebp - 0x224]
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x50a4a8
mov edx, dword [ebp - 0x4b4]
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
lea eax, [edi + 0x10]
mov ecx, dword [ebp - 0x4c0]
mov dword [ecx], eax
jmp 0x50a4c0
push dword [edx - 0xc]
push edx
mov ecx, edi
call fcn.004573c0
mov byte [ebp - 4], 0x35
mov edx, dword [ebp - 0x4a4]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50a4e3
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 0x34
mov edx, dword [ebp - 0x4cc]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50a506
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 7
mov edx, dword [ebp - 0x4c8]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50a529
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov ecx, 0x5a4b00
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x224]
call fcn.00457210
mov byte [ebp - 4], 0x3a
push eax
push 0x136
mov ecx, dword [ebp - 0x4b8]
call fcn.00513840
mov byte [ebp - 4], 7
mov edx, dword [ebp - 0x224]
jmp 0x50bb32
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x228], eax
mov byte [ebp - 4], 0x3f
test esi, esi
jne 0x50a672
lea ecx, [ebp - 0x4b4]
call fcn.0045ef80
mov byte [ebp - 4], 0x40
mov edx, dword [eax]
lea esi, [edx - 0x10]
mov edi, dword [ebp - 0x228]
add edi, 0xfffffff0
cmp esi, edi
je 0x50a64d
cmp dword [edi + 0xc], 0
jl 0x50a63e
mov ecx, dword [esi]
cmp ecx, dword [edi]
jne 0x50a63e
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
lea edx, [esi + 0xc]
cmp dword [edx], 0
jl 0x50a5d4
cmp ecx, dword [esi]
jne 0x50a5d4
mov eax, 1
lock xadd dword [edx], eax
jmp 0x50a61d
mov eax, dword [ecx]
push 2
push dword [esi + 4]
call dword [eax]
mov edx, eax
mov dword [ebp - 0x224], edx
test edx, edx
jne 0x50a5ee
call fcn.00456de0
mov eax, dword [esi + 4]
mov dword [edx + 4], eax
mov ecx, dword [esi + 4]
lea eax, [ecx*2 + 2]
push eax
lea eax, [esi + 0x10]
push eax
lea eax, [ecx*2 + 2]
push eax
lea eax, [edx + 0x10]
push eax
call fcn.0052b264
add esp, 0x10
mov esi, dword [ebp - 0x224]
mov eax, ebx
lea ecx, [edi + 0xc]
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x50a633
mov ecx, dword [edi]
mov eax, dword [ecx]
push edi
call dword [eax + 4]
lea eax, [esi + 0x10]
mov dword [ebp - 0x228], eax
jmp 0x50a64d
push dword [edx - 0xc]
push edx
lea ecx, [ebp - 0x228]
call fcn.004573c0
mov byte [ebp - 4], 0x3f
mov edx, dword [ebp - 0x4b4]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50a6a2
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
jmp 0x50a6a2
lea ecx, [ebp - 0x220]
lea edx, [ecx + 2]
jmp 0x50a680
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x50a680
sub ecx, edx
sar ecx, 1
push ecx
lea eax, [ebp - 0x220]
push eax
lea ecx, [ebp - 0x228]
call fcn.004573c0
mov eax, dword [ebp - 0x228]
mov edx, dword [eax - 0xc]
lea ecx, [edx - 1]
test ecx, ecx
js 0x50a1d6
cmp ecx, edx
jg 0x50a1d6
cmp word [eax + ecx*2], 0x5c
je 0x50a6dd
push 1
push 0x5923e4
lea ecx, [ebp - 0x228]
call fcn.0045c160
mov eax, dword [ebp - 0x228]
mov dword [ebp - 0x248], 0
lea esi, [eax - 0x10]
mov ecx, dword [esi]
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
lea edx, [esi + 0xc]
cmp dword [edx], 0
jl 0x50a70c
cmp ecx, dword [esi]
jne 0x50a70c
mov edi, esi
mov eax, 1
lock xadd dword [edx], eax
jmp 0x50a749
mov eax, dword [ecx]
push 2
push dword [esi + 4]
call dword [eax]
mov edi, eax
test edi, edi
jne 0x50a720
call fcn.00456de0
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov ecx, dword [esi + 4]
lea eax, [ecx*2 + 2]
push eax
lea eax, [esi + 0x10]
push eax
lea eax, [ecx*2 + 2]
push eax
lea eax, [edi + 0x10]
push eax
call fcn.0052b264
add esp, 0x10
lea eax, [edi + 0x10]
mov dword [ebp - 0x248], eax
mov byte [ebp - 4], 0x43
mov ecx, 0x5a4bd0
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x224]
call fcn.00457210
mov byte [ebp - 4], 0x44
mov eax, dword [eax]
push dword [eax - 0xc]
push eax
lea ecx, [ebp - 0x228]
call fcn.0045c160
mov byte [ebp - 4], 0x43
mov edx, dword [ebp - 0x224]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50a7a4
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 0x4a4], 0
push 0
push 0x80
push 2
push 0
push 0
push 0xc0000000
push dword [ebp - 0x228]
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x224], eax
cmp eax, 0xffffffff
je 0x50a989
mov dword [ebp - 0x4bc], 0
mov ecx, dword [ebp - 0x4c8]
test ecx, ecx
je 0x50a96e
mov edi, dword [ebp - 0x238]
add edi, 0x1c
mov edx, edi
mov dword [ebp - 0x22c], ecx
mov esi, dword [edx]
test esi, esi
je 0x50a82f
movzx ecx, byte [esi + 3]
shl ecx, 8
movzx eax, byte [esi + 2]
or ecx, eax
shl ecx, 8
movzx eax, byte [esi + 1]
or ecx, eax
shl ecx, 8
movzx eax, byte [esi]
or ecx, eax
mov esi, dword [ebp - 0x4bc]
add esi, ecx
jmp 0x50a83d
mov eax, dword [edx - 8]
sub eax, dword [edx - 0xc]
mov esi, dword [ebp - 0x4bc]
add esi, eax
mov dword [ebp - 0x4bc], esi
add edx, 0x20
dec dword [ebp - 0x22c]
jne 0x50a801
test esi, esi
je 0x50a96e
push 0
push esi
push 0
push 4
push 0
push dword [ebp - 0x224]
call dword [sym.imp.KERNEL32.dll_CreateFileMappingW]
mov dword [ebp - 0x4a8], eax
test eax, eax
je 0x50a96e
push esi
push 0
push 0
push 0xf001f
push eax
call dword [sym.imp.KERNEL32.dll_MapViewOfFile]
mov dword [ebp - 0x22c], eax
push esi
push 0
mov esi, eax
push esi
call fcn.0052ebd0
add esp, 0xc
xor edx, edx
mov dword [ebp - 0x4bc], edx
mov eax, dword [ebp - 0x4c8]
mov dword [ebp - 0x4b4], eax
mov ecx, dword [edi]
test ecx, ecx
je 0x50a8fc
movzx esi, byte [ecx + 3]
shl esi, 8
movzx eax, byte [ecx + 2]
or esi, eax
shl esi, 8
movzx eax, byte [ecx + 1]
or esi, eax
shl esi, 8
movzx eax, byte [ecx]
or esi, eax
push esi
lea eax, [ecx + 4]
push eax
mov eax, dword [ebp - 0x22c]
add eax, edx
push eax
call fcn.0052e420
add esp, 0xc
mov edx, dword [ebp - 0x4bc]
add edx, esi
mov esi, dword [ebp - 0x22c]
jmp 0x50a920
mov ecx, dword [edi - 0xc]
mov eax, dword [edi - 8]
sub eax, ecx
push eax
push ecx
lea eax, [edx + esi]
push eax
call fcn.0052e420
add esp, 0xc
mov eax, dword [edi - 8]
sub eax, dword [edi - 0xc]
mov edx, dword [ebp - 0x4bc]
add edx, eax
mov dword [ebp - 0x4bc], edx
add edi, 0x20
dec dword [ebp - 0x4b4]
jne 0x50a8b2
push 0
push esi
call dword [sym.imp.KERNEL32.dll_FlushViewOfFile]
mov ecx, dword [ebp - 0x4a4]
movzx ecx, cl
test eax, eax
mov eax, 1
cmovne ecx, eax
mov dword [ebp - 0x4a4], ecx
test esi, esi
je 0x50a95e
push esi
call dword [sym.imp.KERNEL32.dll_UnmapViewOfFile]
push dword [ebp - 0x4a8]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call esi
jmp 0x50a974
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
push dword [ebp - 0x224]
call esi
cmp byte [ebp - 0x4a4], 0
jne 0x50ab06
push ecx
mov dword [ebp - 0x224], esp
mov dword [ebp - 0x4a8], esp
mov esi, dword [ebp - 0x228]
mov ecx, dword [esi - 0x10]
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
lea edx, [esi - 4]
cmp dword [edx], 0
jl 0x50a9c1
cmp ecx, dword [esi - 0x10]
jne 0x50a9c1
lea edi, [esi - 0x10]
mov eax, 1
lock xadd dword [edx], eax
jmp 0x50a9fb
mov eax, dword [ecx]
push 2
push dword [esi - 0xc]
call dword [eax]
mov edi, eax
test edi, edi
jne 0x50a9d5
call fcn.00456de0
mov eax, dword [esi - 0xc]
mov dword [edi + 4], eax
mov ecx, dword [esi - 0xc]
lea eax, [ecx*2 + 2]
push eax
push esi
lea eax, [ecx*2 + 2]
push eax
lea eax, [edi + 0x10]
push eax
call fcn.0052b264
add esp, 0x10
lea eax, [edi + 0x10]
mov ecx, dword [ebp - 0x4a8]
mov dword [ecx], eax
mov byte [ebp - 4], 0x47
mov byte [ebp - 4], 0x43
call fcn.0045f5f0
add esp, 4
mov byte [ebp - 4], 0x48
mov dword [ebp - 0x4a4], 0
mov ecx, 0x592abc
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x4a8]
call fcn.00457210
mov byte [ebp - 4], 0x49
push dword [eax]
push dword [ebp - 0x228]
lea eax, [ebp - 0x4a4]
push eax
call fcn.0052be73
add esp, 0xc
mov esi, eax
mov byte [ebp - 4], 0x48
lea ecx, [ebp - 0x4a8]
call fcn.00456040
test esi, esi
jne 0x50b402
mov edi, dword [ebp - 0x4a4]
test edi, edi
je 0x50b402
mov dword [ebp - 0x4dc], esi
push edi
cmp esi, dword [ebp - 0x4c8]
jae 0x50aafe
mov eax, esi
shl eax, 5
mov ecx, dword [ebp - 0x238]
add ecx, eax
mov edx, dword [ecx + 0x1c]
test edx, edx
je 0x50aadb
movzx ecx, byte [edx + 3]
shl ecx, 8
movzx eax, byte [edx + 2]
or ecx, eax
shl ecx, 8
movzx eax, byte [edx + 1]
or ecx, eax
shl ecx, 8
movzx eax, byte [edx]
or ecx, eax
push ecx
push 1
lea eax, [edx + 4]
push eax
call fcn.0052c0db
add esp, 0x10
inc esi
mov dword [ebp - 0x4dc], esi
mov edi, dword [ebp - 0x4a4]
jmp 0x50aa82
mov eax, dword [ecx + 0x14]
sub eax, dword [ecx + 0x10]
push eax
push 1
push dword [ecx + 0x10]
call fcn.0052c0db
add esp, 0x10
inc esi
mov dword [ebp - 0x4dc], esi
mov edi, dword [ebp - 0x4a4]
jmp 0x50aa82
call fcn.0052c1c9
add esp, 4
mov dword [ebp - 4], 0x43
lea ecx, [ebp - 0x4a8]
call fcn.00457760
mov byte [ebp - 4], 0x54
push dword [eax]
push dword [ebp - 0x248]
push 0x5a4e60
lea eax, [ebp - 0x24c]
push eax
call fcn.00457480
add esp, 0x10
mov byte [ebp - 4], 0x43
mov edx, dword [ebp - 0x4a8]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50ab5b
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
lea ecx, [ebp - 0x24c]
call fcn.0045f750
test al, al
jne 0x50aced
mov ecx, 0x5a4e70
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x224]
call fcn.00457210
mov byte [ebp - 4], 0x56
mov eax, dword [eax]
lea esi, [eax - 0x10]
mov edx, dword [ebp - 0x4c0]
mov edi, dword [edx]
sub edi, 0x10
cmp esi, edi
je 0x50ac4a
cmp dword [edi + 0xc], 0
jl 0x50ac3f
mov ecx, dword [esi]
cmp ecx, dword [edi]
jne 0x50ac3f
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
lea edx, [esi + 0xc]
cmp dword [edx], 0
jl 0x50abd3
cmp ecx, dword [esi]
jne 0x50abd3
mov eax, 1
lock xadd dword [edx], eax
inc eax
jmp 0x50ac1c
mov eax, dword [ecx]
push 2
push dword [esi + 4]
call dword [eax]
mov edx, eax
mov dword [ebp - 0x4a8], edx
test edx, edx
jne 0x50abed
call fcn.00456de0
mov eax, dword [esi + 4]
mov dword [edx + 4], eax
mov ecx, dword [esi + 4]
lea eax, [ecx*2 + 2]
push eax
lea eax, [esi + 0x10]
push eax
lea eax, [ecx*2 + 2]
push eax
lea eax, [edx + 0x10]
push eax
call fcn.0052b264
add esp, 0x10
mov esi, dword [ebp - 0x4a8]
mov eax, ebx
lea ecx, [edi + 0xc]
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x50ac32
mov ecx, dword [edi]
mov eax, dword [ecx]
push edi
call dword [eax + 4]
lea eax, [esi + 0x10]
mov ecx, dword [ebp - 0x4c0]
mov dword [ecx], eax
jmp 0x50ac4a
push dword [eax - 0xc]
push eax
mov ecx, edx
call fcn.004573c0
mov byte [ebp - 4], 0x43
mov edx, dword [ebp - 0x224]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50ac6d
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov ecx, 0x5a4f00
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x4a8]
call fcn.00457210
mov byte [ebp - 4], 0x58
push eax
push 0x168
mov ecx, dword [ebp - 0x4b8]
call fcn.00513840
mov byte [ebp - 4], 0x43
mov edx, dword [ebp - 0x4a8]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50acbb
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 0x3f
mov edx, dword [ebp - 0x248]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50acde
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 7
mov edx, dword [ebp - 0x228]
jmp 0x50bb32
push ecx
mov dword [ebp - 0x224], esp
mov dword [ebp - 0x4a8], esp
mov esi, dword [ebp - 0x228]
mov ecx, dword [esi - 0x10]
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
lea edx, [esi - 4]
cmp dword [edx], 0
jl 0x50ad25
cmp ecx, dword [esi - 0x10]
jne 0x50ad25
lea edi, [esi - 0x10]
mov eax, 1
lock xadd dword [edx], eax
jmp 0x50ad5f
mov eax, dword [ecx]
push 2
push dword [esi - 0xc]
call dword [eax]
mov edi, eax
test edi, edi
jne 0x50ad39
call fcn.00456de0
mov eax, dword [esi - 0xc]
mov dword [edi + 4], eax
mov ecx, dword [esi - 0xc]
lea eax, [ecx*2 + 2]
push eax
push esi
lea eax, [ecx*2 + 2]
push eax
lea eax, [edi + 0x10]
push eax
call fcn.0052b264
add esp, 0x10
lea eax, [edi + 0x10]
mov ecx, dword [ebp - 0x4a8]
mov dword [ecx], eax
mov byte [ebp - 4], 0x5d
push ecx
mov dword [ebp - 0x4b4], esp
mov dword [ebp - 0x4a8], esp
mov esi, dword [ebp - 0x24c]
mov ecx, dword [esi - 0x10]
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
lea edx, [esi - 4]
cmp dword [edx], 0
jl 0x50ada6
cmp ecx, dword [esi - 0x10]
jne 0x50ada6
lea edi, [esi - 0x10]
mov eax, 1
lock xadd dword [edx], eax
jmp 0x50ade0
mov eax, dword [ecx]
push 2
push dword [esi - 0xc]
call dword [eax]
mov edi, eax
test edi, edi
jne 0x50adba
call fcn.00456de0
mov eax, dword [esi - 0xc]
mov dword [edi + 4], eax
mov ecx, dword [esi - 0xc]
lea eax, [ecx*2 + 2]
push eax
push esi
lea eax, [ecx*2 + 2]
push eax
lea eax, [edi + 0x10]
push eax
call fcn.0052b264
add esp, 0x10
lea eax, [edi + 0x10]
mov ecx, dword [ebp - 0x4a8]
mov dword [ecx], eax
mov byte [ebp - 4], 0x5f
mov byte [ebp - 4], 0x43
call fcn.004f6f60
add esp, 8
push ecx
mov dword [ebp - 0x4a8], esp
test al, al
jne 0x50b00f
mov dword [ebp - 0x224], esp
mov esi, dword [ebp - 0x228]
mov ecx, dword [esi - 0x10]
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
lea edx, [esi - 4]
cmp dword [edx], 0
jl 0x50ae3b
cmp ecx, dword [esi - 0x10]
jne 0x50ae3b
lea edi, [esi - 0x10]
mov eax, 1
lock xadd dword [edx], eax
jmp 0x50ae75
mov eax, dword [ecx]
push 2
push dword [esi - 0xc]
call dword [eax]
mov edi, eax
test edi, edi
jne 0x50ae4f
call fcn.00456de0
mov eax, dword [esi - 0xc]
mov dword [edi + 4], eax
mov ecx, dword [esi - 0xc]
lea eax, [ecx*2 + 2]
push eax
push esi
lea eax, [ecx*2 + 2]
push eax
lea eax, [edi + 0x10]
push eax
call fcn.0052b264
add esp, 0x10
lea eax, [edi + 0x10]
mov ecx, dword [ebp - 0x4a8]
mov dword [ecx], eax
mov byte [ebp - 4], 0x61
mov byte [ebp - 4], 0x43
call fcn.0045f5f0
add esp, 4
mov ecx, 0x5a4f60
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x224]
call fcn.00457210
mov byte [ebp - 4], 0x62
mov eax, dword [eax]
lea esi, [eax - 0x10]
mov edx, dword [ebp - 0x4c0]
mov edi, dword [edx]
sub edi, 0x10
cmp esi, edi
je 0x50af6c
cmp dword [edi + 0xc], 0
jl 0x50af61
mov ecx, dword [esi]
cmp ecx, dword [edi]
jne 0x50af61
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
lea edx, [esi + 0xc]
cmp dword [edx], 0
jl 0x50aef5
cmp ecx, dword [esi]
jne 0x50aef5
mov eax, 1
lock xadd dword [edx], eax
inc eax
jmp 0x50af3e
mov eax, dword [ecx]
push 2
push dword [esi + 4]
call dword [eax]
mov edx, eax
mov dword [ebp - 0x4a8], edx
test edx, edx
jne 0x50af0f
call fcn.00456de0
mov eax, dword [esi + 4]
mov dword [edx + 4], eax
mov ecx, dword [esi + 4]
lea eax, [ecx*2 + 2]
push eax
lea eax, [esi + 0x10]
push eax
lea eax, [ecx*2 + 2]
push eax
lea eax, [edx + 0x10]
push eax
call fcn.0052b264
add esp, 0x10
mov esi, dword [ebp - 0x4a8]
mov eax, ebx
lea ecx, [edi + 0xc]
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x50af54
mov ecx, dword [edi]
mov eax, dword [ecx]
push edi
call dword [eax + 4]
lea eax, [esi + 0x10]
mov ecx, dword [ebp - 0x4c0]
mov dword [ecx], eax
jmp 0x50af6c
push dword [eax - 0xc]
push eax
mov ecx, edx
call fcn.004573c0
mov byte [ebp - 4], 0x43
mov edx, dword [ebp - 0x224]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50af8f
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov ecx, 0x5a4fe0
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x4a8]
call fcn.00457210
mov byte [ebp - 4], 0x64
push eax
push 0x168
mov ecx, dword [ebp - 0x4b8]
call fcn.00513840
mov byte [ebp - 4], 0x43
mov edx, dword [ebp - 0x4a8]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50afdd
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 0x3f
mov edx, dword [ebp - 0x248]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50b000
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 7
mov edx, dword [ebp - 0x228]
jmp 0x50bb32
mov esi, esp
mov dword [ebp - 0x224], esi
mov ecx, dword [ebp - 0x228]
lea ecx, [ecx - 0x10]
call fcn.00456280
add eax, 0x10
mov dword [esi], eax
mov byte [ebp - 4], 0x69
mov byte [ebp - 4], 0x43
call fcn.0045f5f0
add esp, 4
mov dword [ebp - 0x250], 0
mov esi, dword [ebp - 0x4b8]
lea eax, [esi + 0x20]
push eax
lea edx, [ebp - 0x24c]
lea ecx, [ebp - 0x250]
call fcn.0045bbe0
add esp, 4
mov byte [ebp - 4], 0x6a
lea eax, [ebp - 0x4a0]
push eax
call fcn.00456ec0
mov edx, dword [ebp - 0x250]
mov ecx, eax
call fcn.00471420
mov ecx, eax
cmp ecx, 0xffffffff
setne al
test al, al
je 0x50b31a
push ecx
call dword [sym.imp.KERNEL32.dll_FindClose]
push 0
push 0
push 3
push 0
push 0
push 0x80000000
push dword [ebp - 0x250]
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov edi, eax
cmp edi, 0xffffffff
je 0x50b232
push 0
push edi
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov esi, eax
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp esi, 0x7d000
jb 0x50b22c
mov ecx, 0x5a51c0
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x4a8]
call fcn.00457210
mov byte [ebp - 4], 0x79
push eax
push 0x168
mov ecx, dword [ebp - 0x4b8]
call fcn.00513840
mov byte [ebp - 4], 0x6a
mov edx, dword [ebp - 0x4a8]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50b128
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
lea eax, [ebp - 0x24c]
push eax
mov edi, dword [ebp - 0x4b0]
mov ecx, edi
call fcn.0045be70
mov byte [ebp - 4], 0x43
mov edx, dword [ebp - 0x250]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50b15f
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 0x3f
mov edx, dword [ebp - 0x248]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50b182
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 7
mov edx, dword [ebp - 0x228]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50b1a5
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 6
mov esi, dword [ebp - 0x238]
test esi, esi
je 0x50b1ee
push dword [ebp - 0x4a8]
push ecx
mov edx, dword [ebp - 0x234]
mov ecx, esi
call fcn.0051f880
push esi
call fcn.0047c370
add esp, 0xc
mov dword [ebp - 0x238], 0
mov dword [ebp - 0x234], 0
mov dword [ebp - 0x230], 0
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x244]
test eax, eax
je 0x50bbcf
push eax
call fcn.0047c370
add esp, 4
mov dword [ebp - 0x244], 0
mov dword [ebp - 0x240], 0
mov dword [ebp - 0x23c], 0
jmp 0x50bbcf
mov esi, dword [ebp - 0x4b8]
mov ecx, 0x5a50f0
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x4a8]
call fcn.00457210
mov byte [ebp - 4], 0x72
push eax
mov ecx, dword [ebp - 0x4c0]
call fcn.0045be70
mov byte [ebp - 4], 0x6a
mov edx, dword [ebp - 0x4a8]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50b27b
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov ecx, 0x5a5170
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x4a8]
call fcn.00457210
mov byte [ebp - 4], 0x74
push eax
push 0x168
mov ecx, esi
call fcn.00513840
mov byte [ebp - 4], 0x6a
mov edx, dword [ebp - 0x4a8]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50b2c5
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 0x43
mov edx, dword [ebp - 0x250]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50b2e8
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 0x3f
mov edx, dword [ebp - 0x248]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50b30b
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 7
mov edx, dword [ebp - 0x228]
jmp 0x50bb32
mov ecx, 0x5a5020
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x4a8]
call fcn.00457210
mov byte [ebp - 4], 0x6b
push eax
mov ecx, dword [ebp - 0x4c0]
call fcn.0045be70
mov byte [ebp - 4], 0x6a
mov edx, dword [ebp - 0x4a8]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50b363
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov ecx, 0x5a50a0
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x4a8]
call fcn.00457210
mov byte [ebp - 4], 0x6d
push eax
push 0x168
mov ecx, esi
call fcn.00513840
mov byte [ebp - 4], 0x6a
mov edx, dword [ebp - 0x4a8]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50b3ad
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 0x43
mov edx, dword [ebp - 0x250]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50b3d0
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 0x3f
mov edx, dword [ebp - 0x248]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50b3f3
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 7
mov edx, dword [ebp - 0x228]
jmp 0x50bb32
mov ecx, 0x5a4bf0
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x224]
call fcn.00457210
mov byte [ebp - 4], 0x4a
mov eax, dword [eax]
lea esi, [eax - 0x10]
mov edx, dword [ebp - 0x4c0]
mov edi, dword [edx]
sub edi, 0x10
cmp esi, edi
je 0x50b4de
cmp dword [edi + 0xc], 0
jl 0x50b4d3
mov ecx, dword [esi]
cmp ecx, dword [edi]
jne 0x50b4d3
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
lea edx, [esi + 0xc]
cmp dword [edx], 0
jl 0x50b467
cmp ecx, dword [esi]
jne 0x50b467
mov eax, 1
lock xadd dword [edx], eax
inc eax
jmp 0x50b4b0
mov eax, dword [ecx]
push 2
push dword [esi + 4]
call dword [eax]
mov edx, eax
mov dword [ebp - 0x4a8], edx
test edx, edx
jne 0x50b481
call fcn.00456de0
mov eax, dword [esi + 4]
mov dword [edx + 4], eax
mov ecx, dword [esi + 4]
lea eax, [ecx*2 + 2]
push eax
lea eax, [esi + 0x10]
push eax
lea eax, [ecx*2 + 2]
push eax
lea eax, [edx + 0x10]
push eax
call fcn.0052b264
add esp, 0x10
mov esi, dword [ebp - 0x4a8]
mov eax, ebx
lea ecx, [edi + 0xc]
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x50b4c6
mov ecx, dword [edi]
mov eax, dword [ecx]
push edi
call dword [eax + 4]
lea eax, [esi + 0x10]
mov ecx, dword [ebp - 0x4c0]
mov dword [ecx], eax
jmp 0x50b4de
push dword [eax - 0xc]
push eax
mov ecx, edx
call fcn.004573c0
mov byte [ebp - 4], 0x48
lea ecx, [ebp - 0x224]
call fcn.00456040
mov ecx, 0x5a4c60
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x4a8]
call fcn.00457210
mov byte [ebp - 4], 0x4b
push eax
push 0x168
mov ecx, dword [ebp - 0x4b8]
call fcn.00513840
mov byte [ebp - 4], 0x48
lea ecx, [ebp - 0x4a8]
call fcn.00456040
mov byte [ebp - 4], 0x3f
lea ecx, [ebp - 0x248]
call fcn.00456040
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x228]
call fcn.00456040
mov byte [ebp - 4], 6
mov esi, dword [ebp - 0x238]
test esi, esi
je 0x50b591
push dword [ebp - 0x4a8]
push ecx
mov edx, dword [ebp - 0x234]
mov ecx, esi
call fcn.0051f880
add esp, 8
push esi
call fcn.0047c370
add esp, 4
mov dword [ebp - 0x238], 0
mov dword [ebp - 0x234], 0
mov dword [ebp - 0x230], 0
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x244]
call fcn.004601d0
mov byte [ebp - 4], 3
jmp 0x50bbc9
mov dword [ebp - 0x4a4], 0
mov ecx, 0x5a49b0
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x4cc]
call fcn.00457210
mov byte [ebp - 4], 0x25
mov edx, dword [eax]
lea esi, [edx - 0x10]
mov eax, dword [ebp - 0x4c0]
mov eax, dword [eax]
sub eax, 0x10
mov dword [ebp - 0x4b4], eax
cmp esi, eax
je 0x50b845
lea ecx, [eax + 0xc]
mov dword [ebp - 0x224], ecx
cmp dword [ecx], 0
jl 0x50b836
mov ecx, dword [esi]
cmp ecx, dword [eax]
jne 0x50b836
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
lea edx, [esi + 0xc]
cmp dword [edx], 0
jl 0x50b7c1
cmp ecx, dword [esi]
jne 0x50b7c1
mov eax, 1
lock xadd dword [edx], eax
inc eax
jmp 0x50b80a
mov eax, dword [ecx]
push 2
push dword [esi + 4]
call dword [eax]
mov edx, eax
mov dword [ebp - 0x4a8], edx
test edx, edx
jne 0x50b7db
call fcn.00456de0
mov eax, dword [esi + 4]
mov dword [edx + 4], eax
mov ecx, dword [esi + 4]
lea eax, [ecx*2 + 2]
push eax
lea eax, [esi + 0x10]
push eax
lea eax, [ecx*2 + 2]
push eax
lea eax, [edx + 0x10]
push eax
call fcn.0052b264
add esp, 0x10
mov esi, dword [ebp - 0x4a8]
mov eax, ebx
mov ecx, dword [ebp - 0x224]
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x50b829
mov edx, dword [ebp - 0x4b4]
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
lea eax, [esi + 0x10]
mov ecx, dword [ebp - 0x4c0]
mov dword [ecx], eax
jmp 0x50b845
push dword [edx - 0xc]
push edx
mov ecx, dword [ebp - 0x4c0]
call fcn.004573c0
mov byte [ebp - 4], 7
mov edx, dword [ebp - 0x4cc]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50b868
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
xor esi, esi
test edi, edi
je 0x50b8ae
mov edi, edi
push 0
mov eax, dword [ebp - 0x244]
push dword [eax + esi*4]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0x102
je 0x50b88e
inc dword [ebp - 0x4a4]
mov eax, dword [ebp - 0x244]
mov eax, dword [eax + esi*4]
test eax, eax
je 0x50b8a9
cmp eax, 0xffffffff
je 0x50b8a9
push 1
push eax
call dword [sym.imp.KERNEL32.dll_TerminateThread]
inc esi
cmp esi, edi
jb 0x50b870
call fcn.00456bd0
mov ecx, eax
xor eax, eax
test ecx, ecx
setne al
test eax, eax
jne 0x50b8ca
push 0x80004005
call fcn.00456ea0
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x4a8], esi
mov byte [ebp - 4], 0x28
mov ecx, 0x5a4a30
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x4cc]
call fcn.00457210
mov byte [ebp - 4], 0x29
lea ecx, [ebp - 0x4a8]
push ecx
mov edx, eax
lea ecx, [ebp - 0x4b4]
call fcn.0045bbe0
add esp, 4
mov byte [ebp - 4], 0x2a
push dword [ebp - 0x4a4]
mov edx, eax
lea ecx, [ebp - 0x224]
call fcn.004f9600
add esp, 4
mov byte [ebp - 4], 0x2b
push eax
push 0x136
mov ecx, dword [ebp - 0x4b8]
call fcn.00513840
mov byte [ebp - 4], 0x2a
mov edx, dword [ebp - 0x224]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50b95f
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 0x29
mov edx, dword [ebp - 0x4b4]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50b982
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 0x28
mov edx, dword [ebp - 0x4cc]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50b9a5
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 7
add esi, 0xfffffff0
lea eax, [esi + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50bb4b
mov ecx, dword [esi]
push esi
jmp 0x50bb46
mov edi, dword [ebp - 0x240]
xor esi, esi
sub edi, dword [ebp - 0x244]
sar edi, 2
test edi, edi
je 0x50bafd
mov ebx, dword [ebp - 0x244]
lea ecx, [ecx]
mov eax, dword [ebx + esi*4]
test eax, eax
je 0x50baf5
cmp eax, 0xffffffff
je 0x50baf5
push 1
push eax
call dword [sym.imp.KERNEL32.dll_TerminateThread]
inc esi
cmp esi, edi
jb 0x50bae0
or ebx, 0xffffffff
mov ecx, 0x5a4870
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x4a8]
call fcn.00457210
mov byte [ebp - 4], 0x19
push eax
push 0x136
mov ecx, dword [ebp - 0x4b8]
call fcn.00513840
mov byte [ebp - 4], 7
mov edx, dword [ebp - 0x4a8]
add edx, 0xfffffff0
mov ecx, ebx
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x50bb4b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 6
mov esi, dword [ebp - 0x238]
test esi, esi
je 0x50bb94
push dword [ebp - 0x4a8]
push ecx
mov edx, dword [ebp - 0x234]
mov ecx, esi
call fcn.0051f880
push esi
call fcn.0047c370
add esp, 0xc
mov dword [ebp - 0x238], 0
mov dword [ebp - 0x234], 0
mov dword [ebp - 0x230], 0
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x244]
test eax, eax
je 0x50bbc9
push eax
call fcn.0047c370
add esp, 4
mov dword [ebp - 0x244], 0
mov dword [ebp - 0x240], 0
mov dword [ebp - 0x23c], 0
mov edi, dword [ebp - 0x4b0]
mov ecx, dword [edi]
xor eax, eax
test ecx, ecx
setne al
test eax, eax
jne 0x50bc66
push 0x80004005
call fcn.00456ea0
mov ecx, 0x5a4730
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x4a8]
call fcn.00457210
mov byte [ebp - 4], 0x15
push eax
push 0x10e
mov ecx, dword [ebp - 0x4d0]
call fcn.00513840
mov byte [ebp - 4], 0xf
lea ecx, [ebp - 0x4a8]
call fcn.00456040
mov ecx, 0x5a4790
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x4a8]
call fcn.00457210
mov byte [ebp - 4], 0x16
push eax
mov ecx, dword [ebp - 0x4cc]
call fcn.0045be70
mov byte [ebp - 4], 0xf
lea ecx, [ebp - 0x4a8]
call fcn.00456040
mov byte [ebp - 0x4c2], 1
mov eax, 0x50baa0
ret
mov eax, dword [ebp - 0x24c]
lea esp, [esp]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x50bc96
test dx, dx
je 0x50bc92
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x50bc96
add eax, 4
add ecx, 4
test dx, dx
jne 0x50bc70
xor eax, eax
jmp 0x50bc9b
sbb eax, eax
or eax, 1
test eax, eax
setne al
test al, al
je 0x50bcfa
call fcn.00456ec0
mov esi, dword [ebp - 0x24c]
mov edx, esi
mov ecx, eax
call fcn.004712e0
cmp eax, 0xffffffff
je 0x50bcfa
test al, 0x10
je 0x50bcfa
mov byte [ebp - 0x4a9], 1
push ecx
mov dword [ebp - 0x4a8], esp
mov edi, esp
mov dword [ebp - 0x224], edi
lea ecx, [esi - 0x10]
call fcn.00456280
add eax, 0x10
mov dword [edi], eax
mov byte [ebp - 4], 0x7f
mov byte [ebp - 4], 3
mov cl, byte [ebp - 0x4a9]
call fcn.0045f540
add esp, 4
mov dword [ebp - 4], 0
mov esi, dword [ebp - 0x24c]
add esi, 0xfffffff0
lea eax, [esi + 0xc]
lock xadd dword [eax], ebx
dec ebx
test ebx, ebx
jg 0x50bd1e
mov ecx, dword [esi]
mov edx, dword [ecx]
push esi
call dword [edx + 4]
mov eax, dword [ebp - 0x4b0]
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.0052ab62
mov esp, ebp
pop ebp
ret 8