Function at 0x516070
Capabilities:
Contain obfuscated stackstrings

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x539c82
mov eax, dword fs:[0]
push eax
sub esp, 0x12c
mov eax, dword [0x616718]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
mov dword [ebp - 0x4c], ebx
mov dword [ebp - 0x3c], 0
lea ecx, [ebp - 0x28]
push 0x17
xor eax, eax
mov dword [ebp - 0x18], 0
push 0x5df020
mov dword [ebp - 0x14], 7
mov word [ebp - 0x28], ax
call fcn.00408800
lea eax, [ebp - 0x28]
mov dword [ebp - 4], 0
push eax
push 0x6166d8
call dword [0x53e888]
mov edx, dword [ebp - 0x14]
add esp, 8
mov dword [ebp - 4], 0xffffffff
cmp edx, 8
jb 0x516129
mov ecx, dword [ebp - 0x28]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x51611f
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x51611f
call dword [0x53e610]
push edx
push ecx
call fcn.0051f6b7
add esp, 8
mov ecx, ebx
call fcn.00512500
test al, al
jne 0x5161b9
push 0x16
xor eax, eax
mov dword [ebp - 0x18], 0
push 0x5df050
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], 7
mov word [ebp - 0x28], ax
call fcn.00408800
lea eax, [ebp - 0x28]
mov dword [ebp - 4], 1
push eax
push 0x6166d8
call dword [0x53e884]
mov edx, dword [ebp - 0x14]
add esp, 8
cmp edx, 8
jb 0x517147
mov ecx, dword [ebp - 0x28]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x5161aa
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x5161aa
call dword [0x53e610]
push edx
push ecx
call fcn.0051f6b7
add esp, 8
jmp 0x517147
call dword [0x53e810]
test al, al
jne 0x51626e
mov ecx, dword [ebx + 0x1c]
lea eax, [ebp - 0x138]
push eax
call fcn.00517b70
push 0xa
push 0
lea ecx, [ebp - 0x130]
mov dword [ebp - 4], 2
call dword [0x53d390]
cmp eax, 1
jne 0x51625c
push 0x5df080
lea ecx, [ebp - 0x28]
call fcn.0040a960
lea eax, [ebp - 0x28]
mov byte [ebp - 4], 3
push eax
push 0x6166d8
call dword [0x53e88c]
mov edx, dword [ebp - 0x14]
add esp, 8
cmp edx, 8
jb 0x516251
mov ecx, dword [ebp - 0x28]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x516247
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x516247
call dword [0x53e610]
push edx
push ecx
call fcn.0051f6b7
add esp, 8
lea ecx, [ebp - 0x138]
jmp 0x517142
lea ecx, [ebp - 0x138]
mov dword [ebp - 4], 0xffffffff
call fcn.00510d80
mov ecx, ebx
call fcn.00512ed0
mov eax, dword [0x6206d8]
test al, 1
jne 0x5162c1
mov dword [0x62069c], 0xffffffff
mov ecx, 0xa
mov dword [0x6206a0], 0x14
mov esi, 0x5def18
mov dword [0x6206a4], 0
mov edi, 0x6206ac
mov dword [0x6206a8], 0x10
or eax, 1
rep movsd dword es:[edi], dword [esi]
mov dword [0x6206d8], eax
movsw word es:[edi], word [esi]
mov dword [ebp - 0x30], 0x62069c
lea ecx, [ebx + 0x18]
mov dword [ebp - 4], 4
mov byte [ebp - 0x58], 0x20
call dword [0x53d760]
push ecx
mov ecx, esp
mov esi, eax
push dword [ebp - 0x58]
call dword [0x53d780]
push 0xa
push 0
push esi
lea eax, [ebp - 0x60]
push eax
lea ecx, [ebp - 0x30]
call dword [0x53d72c]
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 5
push ecx
mov ecx, eax
call dword [0x53d6e8]
push eax
push 0x6166d8
mov byte [ebp - 4], 6
call dword [0x53e888]
mov edx, dword [ebp - 0x14]
add esp, 8
mov byte [ebp - 4], 5
cmp edx, 8
jb 0x51635f
mov ecx, dword [ebp - 0x28]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x516355
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x516355
call dword [0x53e610]
push edx
push ecx
call fcn.0051f6b7
add esp, 8
xor eax, eax
mov dword [ebp - 0x18], 0
lea ecx, [ebp - 0x60]
mov dword [ebp - 0x14], 7
mov word [ebp - 0x28], ax
call dword [0x53d84c]
lea ecx, [ebp - 0x30]
mov dword [ebp - 4], 0xffffffff
call dword [0x53d84c]
mov eax, dword [ebx + 0x18]
mov eax, dword [eax]
cmp eax, 1
je 0x5163a8
test eax, eax
je 0x5163a8
mov eax, dword [ebx + 0x18]
lea ecx, [ebx + 0x18]
push dword [eax + 4]
call fcn.00512a00
lea ecx, [ebx + 0x18]
call dword [0x53d7f4]
mov esi, eax
mov eax, dword [ebx + 0x18]
mov dword [ebp - 0x58], esi
mov eax, dword [eax]
cmp eax, 1
je 0x5163d2
test eax, eax
je 0x5163d2
mov eax, dword [ebx + 0x18]
lea ecx, [ebx + 0x18]
push dword [eax + 4]
call fcn.00512a00
lea ecx, [ebx + 0x18]
call dword [0x53d7f0]
mov dword [ebp - 0x64], eax
cmp esi, eax
je 0x517147
mov ebx, dword [esi]
lea ecx, [ebp - 0xac]
or edi, 0xffffffff
mov byte [ebp - 0xb4], 0
mov dword [ebp - 0xb0], 0
call dword [0x53d864]
mov eax, dword [0x6205a8]
test al, 1
jne 0x516445
or eax, 1
mov dword [0x620594], edi
mov dword [0x6205a8], eax
xor eax, eax
mov dword [0x620598], 0
mov dword [0x62059c], 0
mov dword [0x6205a0], 0x10
mov word [0x6205a4], ax
lea eax, [ebp - 0x30]
mov dword [ebp - 0x30], 0x620594
push eax
lea ecx, [ebp - 0xa4]
mov dword [ebp - 0xa8], 0
call dword [0x53d850]
lea ecx, [ebp - 0x30]
call dword [0x53d84c]
mov eax, dword [0x53d7c8]
mov dword [ebp - 0x9c], eax
mov eax, dword [0x6205c0]
mov dword [ebp - 0xa0], 0
test al, 1
jne 0x5164c5
or eax, 1
mov dword [0x6205ac], 0xffffffff
mov dword [0x6205c0], eax
xor eax, eax
mov dword [0x6205b0], 0
mov dword [0x6205b4], 0
mov dword [0x6205b8], 0x10
mov word [0x6205bc], ax
lea eax, [ebp - 0x38]
mov dword [ebp - 0x38], 0x6205ac
push eax
lea ecx, [ebp - 0x94]
mov byte [ebp - 0x98], 1
call dword [0x53d850]
lea ecx, [ebp - 0x38]
call dword [0x53d84c]
mov ecx, dword [ebp - 0x4c]
lea eax, [ebp - 0xb4]
push eax
push ebx
lea eax, [ebp - 0x40]
mov dword [ebp - 4], 7
push eax
call fcn.00515b30
lea ecx, [ebp - 0xb4]
mov byte [ebp - 4], 8
call fcn.00517620
test al, al
jne 0x516830
mov eax, dword [0x620748]
test al, 1
jne 0x51656b
mov ecx, 0x17
mov dword [0x6206dc], 0xffffffff
mov esi, 0x5def48
mov dword [0x6206e0], 0x2d
mov edi, 0x6206ec
mov dword [0x6206e4], 0
or eax, 1
mov dword [0x6206e8], 0x10
rep movsd dword es:[edi], dword [esi]
mov dword [0x620748], eax
or edi, 0xffffffff
mov dword [ebp - 0x30], 0x6206dc
push ecx
mov ecx, esp
mov byte [ebp - 0x60], 0x20
push dword [ebp - 0x60]
mov byte [ebp - 4], 9
call dword [0x53d780]
movzx eax, byte [ebp - 0xb4]
lea ecx, [ebp - 0x30]
push 0xa
push 0
push eax
lea eax, [ebp - 0xcc]
push eax
call dword [0x53d72c]
mov esi, eax
push ecx
mov ecx, esp
mov byte [ebp - 0xe4], 0x20
push dword [ebp - 0xe4]
mov byte [ebp - 4], 0xa
call dword [0x53d780]
push 0xa
push 0
push dword [ebp - 0xa8]
lea eax, [ebp - 0xc8]
mov ecx, esi
push eax
call dword [0x53d72c]
mov esi, eax
push ecx
mov ecx, esp
mov byte [ebp - 0xe8], 0x20
push dword [ebp - 0xe8]
mov byte [ebp - 4], 0xb
call dword [0x53d780]
push 0xa
push 0
push dword [ebp - 0xb0]
lea eax, [ebp - 0x104]
mov ecx, esi
push eax
call dword [0x53d72c]
mov esi, eax
push ecx
mov ecx, esp
mov byte [ebp - 0xec], 0x20
push dword [ebp - 0xec]
mov byte [ebp - 4], 0xc
call dword [0x53d780]
movzx eax, byte [ebp - 0x98]
mov ecx, esi
push 0xa
push 0
push eax
lea eax, [ebp - 0x100]
push eax
call dword [0x53d72c]
mov esi, eax
push ecx
mov ecx, esp
mov byte [ebp - 0xf0], 0x20
push dword [ebp - 0xf0]
mov byte [ebp - 4], 0xd
call dword [0x53d780]
push 0
lea eax, [ebp - 0x94]
mov ecx, esi
push eax
lea eax, [ebp - 0xfc]
push eax
call dword [0x53d77c]
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 0xe
push ecx
mov ecx, eax
call dword [0x53d6e8]
push eax
push 0x6166d8
mov byte [ebp - 4], 0xf
call dword [0x53e88c]
mov edx, dword [ebp - 0x14]
add esp, 8
mov byte [ebp - 4], 0xe
cmp edx, 8
jb 0x5166d8
mov ecx, dword [ebp - 0x28]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x5166ce
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x516119
push edx
push ecx
call fcn.0051f6b7
add esp, 8
xor eax, eax
mov dword [ebp - 0x18], 0
lea ecx, [ebp - 0xfc]
mov dword [ebp - 0x14], 7
mov word [ebp - 0x28], ax
call dword [0x53d84c]
lea ecx, [ebp - 0x100]
call dword [0x53d84c]
lea ecx, [ebp - 0x104]
call dword [0x53d84c]
lea ecx, [ebp - 0xc8]
call dword [0x53d84c]
lea ecx, [ebp - 0xcc]
call dword [0x53d84c]
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], 8
call dword [0x53d84c]
lea eax, [ebp - 0x74]
push eax
call dword [0x53d380]
add esp, 4
lea ecx, [ebp - 0x74]
call dword [0x53d388]
lea ecx, [ebp - 0x74]
imul esi, eax, 0x3e8
call dword [0x53d384]
add eax, esi
push eax
call dword [0x53d3a0]
add esp, 4
call dword [0x53d39c]
cdq
mov ecx, 0xfa0
idiv ecx
push 0
lea ecx, [ebp - 0xf8]
lea esi, [edx + 0xa]
call dword [0x53d410]
push str.1quit__
lea eax, [ebp - 0xf8]
mov byte [ebp - 4], 0x10
push eax
push esi
call dword [0x53d37c]
add esp, 8
lea ecx, [ebp - 0xf8]
mov eax, esp
mov dword [eax], 0
call dword [0x53d408]
lea ecx, [ebp - 0xf8]
mov byte [ebp - 4], 8
call dword [0x53d40c]
mov ecx, dword [ebp - 0x4c]
lea eax, [ebp - 0xb4]
push eax
push ebx
lea eax, [ebp - 0x50]
push eax
call fcn.00515b30
push eax
lea ecx, [ebp - 0x40]
call fcn.00511060
mov eax, dword [ebp - 0x50]
mov byte [ebp - 4], 0x11
mov eax, dword [eax]
test eax, eax
je 0x516803
cmp eax, 0xffffffff
je 0x51682c
mov eax, dword [ebp - 0x50]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
setne al
test al, al
jne 0x51682c
mov esi, dword [ebp - 0x50]
lea ecx, [ebp - 0x50]
mov eax, dword [esi + 0xc]
add eax, 4
lea eax, [esi + eax*4]
push eax
mov eax, dword [esi + 8]
add eax, 4
lea eax, [esi + eax*4]
push eax
call fcn.005152b0
push esi
call dword [0x53d7fc]
add esp, 4
mov byte [ebp - 4], 8
mov esi, dword [ebx]
xor edi, edi
lea ebx, [esi + 8]
cmp dword [esi + 0xc], edi
je 0x516841
mov esi, dword [esi + 0x14]
jmp 0x516843
mov esi, ebx
cmp esi, ebx
je 0x516860
lea ecx, [esi + 0x10]
call dword [0x53d760]
mov ecx, esi
add edi, eax
call dword [0x53d6d4]
mov esi, eax
cmp esi, ebx
jne 0x516847
mov dword [ebp - 0xa0], edi
mov ebx, dword [ebp - 0x3c]
lea ecx, [ebp - 0x40]
mov eax, dword [0x53d7c8]
or ebx, 1
mov byte [ebp - 4], 0x12
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x3c], ebx
call dword [0x53d7f4]
lea ecx, [ebp - 0x40]
mov esi, eax
call dword [0x53d7f0]
mov dword [ebp - 0x30], eax
cmp esi, eax
je 0x516936
mov ebx, eax
lea esp, [esp]
mov edi, dword [esi]
mov ecx, edi
call fcn.005172e0
test al, al
jne 0x516928
lea eax, [edi + 0x14]
push eax
lea ecx, [ebp - 0x7c]
call dword [0x53d850]
lea eax, [edi + 8]
push eax
lea ecx, [ebp - 0x78]
call dword [0x53d850]
lea eax, [ebp - 0x78]
push eax
lea ecx, [ebp - 0xbc]
call dword [0x53d850]
lea eax, [ebp - 0x7c]
push eax
lea ecx, [ebp - 0xb8]
call dword [0x53d850]
lea eax, [ebp - 0xbc]
mov byte [ebp - 4], 0x15
push eax
lea ecx, [ebp - 0x38]
call fcn.00511f30
lea ecx, [ebp - 0xb8]
call dword [0x53d84c]
lea ecx, [ebp - 0xbc]
call dword [0x53d84c]
lea ecx, [ebp - 0x78]
call dword [0x53d84c]
lea ecx, [ebp - 0x7c]
mov byte [ebp - 4], 0x12
call dword [0x53d84c]
add esi, 4
cmp esi, ebx
jne 0x5168a0
mov ebx, dword [ebp - 0x3c]
lea eax, [ebp - 0x38]
push eax
lea ecx, [ebp - 0x9c]
call fcn.00510fb0
and ebx, 0xfffffffe
mov dword [ebp - 0x3c], ebx
mov eax, dword [ebp - 0x38]
mov byte [ebp - 4], 0x16
mov eax, dword [eax]
test eax, eax
je 0x516970
or esi, 0xffffffff
cmp eax, esi
je 0x5169a0
mov eax, dword [ebp - 0x38]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
setne al
test al, al
jne 0x5169a0
mov esi, dword [ebp - 0x38]
lea ecx, [ebp - 0x38]
mov eax, dword [esi + 0xc]
add eax, 4
lea eax, [esi + eax*4]
push eax
mov eax, dword [esi + 8]
add eax, 4
lea eax, [esi + eax*4]
push eax
call fcn.005151b0
mov ebx, dword [0x53d7fc]
push esi
call ebx
add esp, 4
or esi, 0xffffffff
jmp 0x5169a6
mov ebx, dword [0x53d7fc]
mov edi, dword [ebp - 0x4c]
lea eax, [ebp - 0xb4]
push eax
mov ecx, edi
mov byte [ebp - 4], 8
call fcn.005156d0
lea ecx, [ebp - 0xb4]
call fcn.00517620
test al, al
je 0x5170e8
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x44]
push eax
call fcn.005128d0
add esp, 8
lea eax, [ebp - 0xd8]
push eax
lea ecx, [ebp - 0x59]
call fcn.00511280
mov edi, eax
lea ecx, [ebp - 0x44]
mov byte [ebp - 4], 0x19
mov byte [ebp - 0xd0], 0x20
call dword [0x53d760]
push ecx
mov ecx, esp
mov esi, eax
push dword [ebp - 0xd0]
call dword [0x53d780]
push 0xa
push 0
push esi
lea eax, [ebp - 0xd4]
mov ecx, edi
push eax
call dword [0x53d72c]
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 0x1a
push ecx
mov ecx, eax
call dword [0x53d6e8]
push eax
push 0x6166d8
mov byte [ebp - 4], 0x1b
call dword [0x53e888]
mov edx, dword [ebp - 0x14]
add esp, 8
mov byte [ebp - 4], 0x1a
cmp edx, 8
jb 0x516a89
mov ecx, dword [ebp - 0x28]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x516a7f
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x516119
push edx
push ecx
call fcn.0051f6b7
add esp, 8
xor eax, eax
mov dword [ebp - 0x18], 0
lea ecx, [ebp - 0xd4]
mov dword [ebp - 0x14], 7
mov word [ebp - 0x28], ax
call dword [0x53d84c]
lea ecx, [ebp - 0xd8]
mov byte [ebp - 4], 0x18
call dword [0x53d84c]
lea ecx, [ebp - 0x114]
mov dword [ebp - 0x114], 0
mov dword [ebp - 0x110], 0x80000000
mov dword [ebp - 0x10c], 0
mov dword [ebp - 0x108], 0x80000000
call dword [0x53d378]
lea eax, [ebp - 0x44]
push eax
lea ecx, [ebp - 0x34]
call fcn.005107f0
mov edi, dword [0x53d374]
lea ecx, [ebp - 0x114]
push 0
push 0x2710
call edi
test al, al
jne 0x516d08
lea ecx, [ebp - 0x34]
call dword [0x53d6e0]
test al, al
jne 0x516d08
mov eax, dword [0x6207ec]
test al, 1
jne 0x516b79
mov dword [0x62079c], 0xffffffff
mov ecx, 0xf
mov dword [0x6207a0], 0x1e
mov esi, 0x5defe0
mov dword [0x6207a4], 0
mov edi, 0x6207ac
mov dword [0x6207a8], 0x10
or eax, 1
rep movsd dword es:[edi], dword [esi]
mov dword [0x6207ec], eax
movsw word es:[edi], word [esi]
mov edi, dword [0x53d374]
mov dword [ebp - 0x30], 0x62079c
lea ecx, [ebp - 0x34]
mov byte [ebp - 4], 0x1d
mov byte [ebp - 0xdc], 0x20
call dword [0x53d760]
push ecx
mov ecx, esp
mov esi, eax
push dword [ebp - 0xdc]
call dword [0x53d780]
push 0xa
push 0
push esi
lea eax, [ebp - 0xe0]
push eax
lea ecx, [ebp - 0x30]
call dword [0x53d72c]
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 0x1e
push ecx
mov ecx, eax
call dword [0x53d6e8]
push eax
push 0x6166d8
mov byte [ebp - 4], 0x1f
call dword [0x53e888]
mov edx, dword [ebp - 0x14]
add esp, 8
mov byte [ebp - 4], 0x1e
cmp edx, 8
jb 0x516c1b
mov ecx, dword [ebp - 0x28]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x516c11
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x516119
push edx
push ecx
call fcn.0051f6b7
add esp, 8
xor eax, eax
mov dword [ebp - 0x18], 0
lea ecx, [ebp - 0xe0]
mov dword [ebp - 0x14], 7
mov word [ebp - 0x28], ax
call dword [0x53d84c]
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], 0x1c
call dword [0x53d84c]
mov ecx, dword [ebp - 0x4c]
lea eax, [ebp - 0x34]
push eax
lea eax, [ebp - 0x54]
push eax
call fcn.005121e0
mov ecx, dword [0x53d7c8]
mov edx, dword [eax]
mov dword [eax], ecx
mov esi, dword [ebp - 0x34]
mov dword [ebp - 0x34], edx
mov eax, dword [esi]
mov byte [ebp - 4], 0x20
test eax, eax
je 0x516c86
cmp eax, 0xffffffff
je 0x516ca8
or eax, 0xffffffff
lock xadd dword [esi], eax
dec eax
setne al
test al, al
jne 0x516ca8
mov eax, dword [esi + 0xc]
lea ecx, [ebp - 0x2c]
add eax, 4
lea eax, [esi + eax*4]
push eax
mov eax, dword [esi + 8]
add eax, 4
lea eax, [esi + eax*4]
push eax
call fcn.005152b0
push esi
call ebx
add esp, 4
mov eax, dword [ebp - 0x54]
mov byte [ebp - 4], 0x21
mov eax, dword [eax]
test eax, eax
je 0x516ccc
cmp eax, 0xffffffff
je 0x516cf1
mov eax, dword [ebp - 0x54]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
setne al
test al, al
jne 0x516cf1
mov esi, dword [ebp - 0x54]
lea ecx, [ebp - 0x54]
mov eax, dword [esi + 0xc]
add eax, 4
lea eax, [esi + eax*4]
push eax
mov eax, dword [esi + 8]
add eax, 4
lea eax, [esi + eax*4]
push eax
call fcn.005152b0
push esi
call ebx
add esp, 4
push 0
push 0x2710
lea ecx, [ebp - 0x114]
call edi
test al, al
je 0x516b16
mov edi, dword [ebp - 0x3c]
lea ecx, [ebp - 0x44]
mov eax, dword [0x53d7c8]
or edi, 4
mov byte [ebp - 4], 0x22
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x3c], edi
call dword [0x53d7f4]
lea ecx, [ebp - 0x44]
mov esi, eax
call dword [0x53d7f0]
mov dword [ebp - 0x2c], eax
cmp esi, eax
je 0x516e0a
lea esp, [esp]
mov ebx, dword [esi]
lea ecx, [ebp - 0x34]
call dword [0x53d7f0]
lea ecx, [ebp - 0x34]
mov dword [ebp - 0x30], eax
call dword [0x53d7f4]
mov edi, eax
cmp edi, dword [ebp - 0x30]
je 0x516d78
mov edi, edi
mov ecx, dword [edi]
push ebx
call fcn.00517200
test al, al
jne 0x516dfb
add edi, 4
cmp edi, dword [ebp - 0x30]
jne 0x516d60
lea edi, [ebx + 8]
push edi
lea ecx, [ebp - 0x84]
call dword [0x53d850]
lea eax, [ebx + 4]
push eax
lea ecx, [ebp - 0x80]
call dword [0x53d850]
lea eax, [ebp - 0x84]
mov byte [ebp - 4], 0x24
push eax
lea eax, [ebp - 0x80]
push eax
call fcn.00513bc0
add esp, 8
lea ecx, [ebp - 0x80]
mov bl, al
call dword [0x53d84c]
lea ecx, [ebp - 0x84]
mov byte [ebp - 4], 0x22
call dword [0x53d84c]
test bl, bl
jne 0x516dfb
push edi
lea ecx, [ebp - 0x88]
call dword [0x53d850]
lea eax, [ebp - 0x88]
mov byte [ebp - 4], 0x25
push eax
lea ecx, [ebp - 0x38]
call fcn.00405ce0
lea ecx, [ebp - 0x88]
mov byte [ebp - 4], 0x22
call dword [0x53d84c]
add esi, 4
cmp esi, dword [ebp - 0x2c]
jne 0x516d40
mov edi, dword [ebp - 0x3c]
mov eax, dword [0x53d7c8]
lea ecx, [ebp - 0x34]
or edi, 8
mov byte [ebp - 4], 0x26
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x3c], edi
call dword [0x53d7f4]
lea ecx, [ebp - 0x34]
mov esi, eax
call dword [0x53d7f0]
mov ebx, eax
cmp esi, ebx
je 0x516edd
lea ebx, [ebx]
mov edi, dword [esi]
lea ecx, [edi + 0x14]
push ecx
lea ecx, [ebp - 0x90]
call dword [0x53d850]
lea eax, [edi + 8]
push eax
lea ecx, [ebp - 0x8c]
call dword [0x53d850]
lea eax, [ebp - 0x8c]
push eax
lea ecx, [ebp - 0xc4]
call dword [0x53d850]
lea eax, [ebp - 0x90]
push eax
lea ecx, [ebp - 0xc0]
call dword [0x53d850]
lea eax, [ebp - 0xc4]
mov byte [ebp - 4], 0x29
push eax
lea ecx, [ebp - 0x48]
call fcn.00511f30
lea ecx, [ebp - 0xc0]
call dword [0x53d84c]
lea ecx, [ebp - 0xc4]
call dword [0x53d84c]
lea ecx, [ebp - 0x8c]
call dword [0x53d84c]
lea ecx, [ebp - 0x90]
mov byte [ebp - 4], 0x26
call dword [0x53d84c]
add esi, 4
cmp esi, ebx
jne 0x516e40
mov edi, dword [ebp - 0x3c]
lea ecx, [ebp - 0x44]
call dword [0x53d760]
mov dword [ebp - 0x70], eax
lea ecx, [ebp - 0x6c]
lea eax, [ebp - 0x48]
push eax
call fcn.00510740
lea eax, [ebp - 0x38]
mov byte [ebp - 4], 0x2a
push eax
lea ecx, [ebp - 0x68]
call fcn.00405920
and edi, 0xfffffff7
mov dword [ebp - 0x3c], edi
mov eax, dword [ebp - 0x48]
mov byte [ebp - 4], 0x2d
mov eax, dword [eax]
test eax, eax
je 0x516f2f
cmp eax, 0xffffffff
je 0x516f5c
mov eax, dword [ebp - 0x48]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
setne al
test al, al
jne 0x516f5c
mov esi, dword [ebp - 0x48]
lea ecx, [ebp - 0x48]
mov eax, dword [esi + 0xc]
add eax, 4
lea eax, [esi + eax*4]
push eax
mov eax, dword [esi + 8]
add eax, 4
lea eax, [esi + eax*4]
push eax
call fcn.005151b0
mov ebx, dword [0x53d7fc]
push esi
call ebx
add esp, 4
jmp 0x516f62
mov ebx, dword [0x53d7fc]
and dword [ebp - 0x3c], 0xfffffffb
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0x2e
call fcn.00405b90
mov esi, dword [ebp - 0x4c]
lea eax, [ebp - 0x70]
push eax
mov ecx, esi
call fcn.00515310
lea eax, [ebp - 0xb4]
mov ecx, esi
push eax
call fcn.00513eb0
lea eax, [ebp - 0x70]
mov ecx, esi
push eax
call fcn.005146e0
lea ecx, [ebp - 0x68]
call fcn.00405b90
mov eax, dword [ebp - 0x6c]
mov byte [ebp - 4], 0x2f
mov eax, dword [eax]
test eax, eax
je 0x516fc5
cmp eax, 0xffffffff
je 0x516fea
mov eax, dword [ebp - 0x6c]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
setne al
test al, al
jne 0x516fea
mov esi, dword [ebp - 0x6c]
lea ecx, [ebp - 0x6c]
mov eax, dword [esi + 0xc]
add eax, 4
lea eax, [esi + eax*4]
push eax
mov eax, dword [esi + 8]
add eax, 4
lea eax, [esi + eax*4]
push eax
call fcn.005151b0
push esi
call ebx
add esp, 4
mov eax, dword [ebp - 0x34]
mov byte [ebp - 4], 0x30
mov eax, dword [eax]
test eax, eax
je 0x51700e
cmp eax, 0xffffffff
je 0x517033
mov eax, dword [ebp - 0x34]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
setne al
test al, al
jne 0x517033
mov esi, dword [ebp - 0x34]
lea ecx, [ebp - 0x34]
mov eax, dword [esi + 0xc]
add eax, 4
lea eax, [esi + eax*4]
push eax
mov eax, dword [esi + 8]
add eax, 4
lea eax, [esi + eax*4]
push eax
call fcn.005152b0
push esi
call ebx
add esp, 4
mov eax, dword [ebp - 0x44]
mov byte [ebp - 4], 0x31
mov eax, dword [eax]
test eax, eax
je 0x517057
cmp eax, 0xffffffff
je 0x51707c
mov eax, dword [ebp - 0x44]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
setne al
test al, al
jne 0x51707c
mov esi, dword [ebp - 0x44]
lea ecx, [ebp - 0x44]
mov eax, dword [esi + 0xc]
add eax, 4
lea eax, [esi + eax*4]
push eax
mov eax, dword [esi + 8]
add eax, 4
lea eax, [esi + eax*4]
push eax
call fcn.005152b0
push esi
call ebx
add esp, 4
mov eax, dword [ebp - 0x40]
mov byte [ebp - 4], 0x32
mov eax, dword [eax]
test eax, eax
je 0x5170a0
cmp eax, 0xffffffff
je 0x5170c5
mov eax, dword [ebp - 0x40]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
setne al
test al, al
jne 0x5170c5
mov esi, dword [ebp - 0x40]
lea ecx, [ebp - 0x40]
mov eax, dword [esi + 0xc]
add eax, 4
lea eax, [esi + eax*4]
push eax
mov eax, dword [esi + 8]
add eax, 4
lea eax, [esi + eax*4]
push eax
call fcn.005152b0
push esi
call ebx
add esp, 4
lea ecx, [ebp - 0xb4]
mov dword [ebp - 4], 0xffffffff
call fcn.00510d80
mov esi, dword [ebp - 0x58]
add esi, 4
cmp esi, dword [ebp - 0x64]
mov dword [ebp - 0x58], esi
jmp 0x5163e0
lea eax, [ebp - 0xb4]
mov ecx, edi
push eax
call fcn.00513eb0
mov eax, dword [ebp - 0x40]
mov byte [ebp - 4], 0x17
mov eax, dword [eax]
test eax, eax
je 0x517117
cmp eax, 0xffffffff
je 0x51713c
mov eax, dword [ebp - 0x40]
lock xadd dword [eax], esi
dec esi
setne al
test al, al
jne 0x51713c
mov esi, dword [ebp - 0x40]
lea ecx, [ebp - 0x40]
mov eax, dword [esi + 0xc]
add eax, 4
lea eax, [esi + eax*4]
push eax
mov eax, dword [esi + 8]
add eax, 4
lea eax, [esi + eax*4]
push eax
call fcn.005152b0
push esi
call ebx
add esp, 4
lea ecx, [ebp - 0xb4]
call fcn.00510d80
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0051f6a1
mov esp, ebp
pop ebp
ret