Function at 0x5105f0
Capabilities:
Contain obfuscated stackstrings
Encode data using base64

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x557375
mov eax, dword fs:[0]
push eax
sub esp, 0x350
mov eax, dword [0x5c2b80]
xor eax, ebp
mov dword [ebp - 0x18], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x350], ecx
mov eax, dword [ebp + 8]
mov dword [ebp - 0x334], eax
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x324], eax
mov dword [ebp - 0x33c], eax
xor al, al
mov byte [ebp - 0x31e], al
mov byte [ebp - 0x325], al
mov byte [ebp - 0x31d], al
mov edx, dword [edi]
mov ecx, dword [edx - 0xc]
test ecx, ecx
je 0x510687
lea eax, [ecx - 1]
test eax, eax
js 0x510677
cmp eax, ecx
jg 0x510677
movzx eax, word [edx + eax*2]
cmp eax, 0x2c
je 0x510681
mov al, 1
jmp 0x510687
push 0x80070057
call fcn.00456ea0
mov al, byte [ebp - 0x31d]
mov dword [ebp - 0x20], 0
mov esi, 0x593024
mov ecx, 0x592b28
test al, al
cmove esi, ecx
call fcn.00456bd0
mov ecx, eax
xor eax, eax
test ecx, ecx
setne al
test eax, eax
jne 0x5106b9
push 0x80004005
call fcn.00456ea0
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x1c], eax
mov dword [ebp - 4], 0
test esi, esi
je 0x5106f3
test esi, 0xffff0000
jne 0x5106f3
movzx esi, si
mov ecx, esi
call fcn.00456820
test eax, eax
je 0x5106fc
push esi
push eax
lea ecx, [ebp - 0x1c]
call fcn.00456700
jmp 0x5106fc
push esi
lea ecx, [ebp - 0x1c]
call fcn.004561f0
mov dword [ebp - 4], 1
lea eax, [ebp - 0x1c]
push eax
mov edx, edi
lea ecx, [ebp - 0x32c]
call fcn.0045bbe0
add esp, 4
mov edx, eax
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x350]
add eax, 0xf8
push eax
lea ecx, [ebp - 0x30]
call fcn.0045bbe0
add esp, 4
mov byte [ebp - 4], 3
mov esi, dword [eax]
call fcn.00456bd0
mov ecx, eax
xor eax, eax
test ecx, ecx
setne al
test eax, eax
jne 0x510756
push 0x80004005
call fcn.00456ea0
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x20], eax
mov byte [ebp - 4], 4
test esi, esi
je 0x51078d
test esi, 0xffff0000
jne 0x51078d
movzx esi, si
mov ecx, esi
call fcn.00456820
test eax, eax
je 0x510796
push esi
push eax
lea ecx, [ebp - 0x20]
call fcn.0045c230
jmp 0x510796
push esi
lea ecx, [ebp - 0x20]
call fcn.0045b6d0
mov byte [ebp - 4], 6
mov edx, dword [ebp - 0x30]
add edx, 0xfffffff0
lea ecx, [edx + 0xc]
or esi, 0xffffffff
mov eax, esi
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x5107b9
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 8
mov edx, dword [ebp - 0x32c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x5107dc
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 0xa
mov edx, dword [ebp - 0x1c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x5107fc
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov dword [ebp - 0x34], 0
call fcn.00456bd0
mov ecx, eax
xor eax, eax
test ecx, ecx
setne al
test eax, eax
jne 0x51081f
push 0x80004005
call fcn.00456ea0
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x34], eax
mov byte [ebp - 4], 0xd
xorps xmm0, xmm0
movq qword [ebp - 0x2c], xmm0
mov dword [ebp - 0x24], 0
xor edi, edi
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x28], edi
mov dword [ebp - 0x24], edi
mov byte [ebp - 4], 0xe
mov edi, edi
mov eax, dword [ebp - 0x20]
test edi, edi
js 0x5108c5
cmp edi, dword [eax - 0xc]
jg 0x5108c5
push 0x593024
add eax, edi
push eax
call fcn.0052cef4
add esp, 8
mov ecx, eax
mov eax, dword [ebp - 0x20]
test ecx, ecx
je 0x5108c5
sub ecx, eax
mov dword [ebp - 0x1c], ecx
js 0x5108c5
sub ecx, edi
push ecx
push edi
lea eax, [ebp - 0x32c]
push eax
lea ecx, [ebp - 0x20]
call fcn.0051afa0
mov byte [ebp - 4], 0xf
push eax
lea ecx, [ebp - 0x2c]
call fcn.0051c060
mov byte [ebp - 4], 0xe
mov edx, dword [ebp - 0x32c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x5108bf
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov edi, dword [ebp - 0x1c]
inc edi
jmp 0x510850
mov eax, dword [eax - 0xc]
cmp edi, eax
jge 0x51090f
sub eax, edi
push eax
push edi
lea eax, [ebp - 0x32c]
push eax
lea ecx, [ebp - 0x20]
call fcn.0051afa0
mov byte [ebp - 4], 0x11
push eax
lea ecx, [ebp - 0x2c]
call fcn.0051c060
mov byte [ebp - 4], 0xe
mov edx, dword [ebp - 0x32c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x51090f
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov eax, dword [ebp - 0x2c]
cmp eax, dword [ebp - 0x28]
jne 0x510985
mov byte [ebp - 4], 0xd
test eax, eax
je 0x51093d
push eax
call fcn.0047c370
add esp, 4
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 0
mov byte [ebp - 4], 0xa
mov edx, dword [ebp - 0x34]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x51095d
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x20]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], esi
dec esi
test esi, esi
jg 0x51097e
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov al, 1
jmp 0x51123a
mov ecx, 0x5a6750
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x348]
call fcn.00457210
mov edi, eax
mov byte [ebp - 4], 0x16
mov ecx, 0x5a2c90
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x340]
call fcn.00457210
mov esi, eax
mov byte [ebp - 4], 0x17
push 0x5923e4
lea ecx, [ebp - 0x338]
call fcn.00457210
mov byte [ebp - 4], 0x18
mov ecx, dword [ebp - 0x350]
add ecx, 0x24
mov dword [ebp - 0x344], ecx
push eax
mov edx, ecx
lea ecx, [ebp - 0x34c]
call fcn.0045bbe0
add esp, 4
mov byte [ebp - 4], 0x19
push esi
mov edx, eax
lea ecx, [ebp - 0x30]
call fcn.0045bbe0
add esp, 4
mov byte [ebp - 4], 0x1a
push 0x5923e4
mov edx, eax
lea ecx, [ebp - 0x1c]
call fcn.0045ebe0
add esp, 4
mov byte [ebp - 4], 0x1b
push edi
mov edx, eax
lea ecx, [ebp - 0x32c]
call fcn.0045bbe0
add esp, 4
mov byte [ebp - 4], 0x1c
mov esi, dword [eax]
lea eax, [ebp - 0x31c]
push eax
call fcn.00456ec0
mov edx, esi
mov ecx, eax
call fcn.00471420
cmp eax, 0xffffffff
setne cl
mov byte [ebp - 0x31d], cl
test cl, cl
je 0x510a60
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
mov byte [ebp - 4], 0x1b
mov edx, dword [ebp - 0x32c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
or esi, 0xffffffff
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x510a86
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 0x1a
mov edx, dword [ebp - 0x1c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x510aa6
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 0x19
mov edx, dword [ebp - 0x30]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x510ac6
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 0x18
mov edx, dword [ebp - 0x34c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x510ae9
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 0x17
mov edx, dword [ebp - 0x338]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x510b0c
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 0x16
mov edx, dword [ebp - 0x340]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x510b2f
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 0xe
mov edx, dword [ebp - 0x348]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x510b52
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
cmp byte [ebp - 0x31d], 0
je 0x511188
mov dword [ebp - 0x30], 0
mov ecx, 0x5a6750
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x330]
call fcn.00457210
mov edi, eax
mov byte [ebp - 4], 0x24
mov ecx, 0x5a2c90
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x1c]
call fcn.00457210
mov esi, eax
mov byte [ebp - 4], 0x25
push 0x5923e4
lea ecx, [ebp - 0x32c]
call fcn.00457210
mov byte [ebp - 4], 0x26
push eax
mov edx, dword [ebp - 0x344]
lea ecx, [ebp - 0x34c]
call fcn.0045bbe0
add esp, 4
mov byte [ebp - 4], 0x27
push esi
mov edx, eax
lea ecx, [ebp - 0x338]
call fcn.0045bbe0
add esp, 4
mov byte [ebp - 4], 0x28
push 0x5923e4
mov edx, eax
lea ecx, [ebp - 0x340]
call fcn.0045ebe0
add esp, 4
mov byte [ebp - 4], 0x29
push edi
mov edx, eax
lea ecx, [ebp - 0x348]
call fcn.0045bbe0
add esp, 4
mov byte [ebp - 4], 0x2a
mov edx, eax
lea ecx, [ebp - 0x30]
call fcn.0045f880
mov byte [ebp - 4], 0x2c
mov edx, dword [ebp - 0x348]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
or esi, 0xffffffff
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x510c3b
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 0x2e
mov edx, dword [ebp - 0x340]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x510c5e
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 0x30
mov edx, dword [ebp - 0x338]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x510c81
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 0x32
mov edx, dword [ebp - 0x34c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x510ca4
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 0x34
mov edx, dword [ebp - 0x32c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x510cc7
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 0x36
mov edx, dword [ebp - 0x1c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x510ce7
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 0x38
mov edx, dword [ebp - 0x330]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x510d0a
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 4], 0x3a
push 0x70
push 0
lea eax, [ebp - 0xcc]
push eax
call fcn.0052ebd0
add esp, 0xc
lea ecx, [ebp - 0xcc]
call fcn.00465250
mov byte [ebp - 4], 0x3b
xorps xmm0, xmm0
movdqu xmmword [ebp - 0x44], xmm0
push 0
lea ecx, [ebp - 0x44]
call fcn.00468bc0
mov byte [ebp - 4], 0x3c
lea edx, [ebp - 0x30]
lea ecx, [ebp - 0x5c]
call fcn.00457010
mov byte [ebp - 4], 0x3d
push ecx
lea ecx, [ebp - 0x44]
push ecx
push eax
lea ecx, [ebp - 0xcc]
call fcn.00465360
test al, al
sete byte [ebp - 0x31d]
mov byte [ebp - 4], 0x3c
lea ecx, [ebp - 0x5c]
call fcn.00455f00
cmp byte [ebp - 0x31d], 0
je 0x510e42
mov ecx, 0x5a6770
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x330]
call fcn.00457210
mov byte [ebp - 4], 0x3e
push eax
mov ecx, dword [ebp - 0x324]
call fcn.0045be70
mov byte [ebp - 4], 0x3c
lea ecx, [ebp - 0x330]
call fcn.00456040
mov byte [ebp - 4], 0x3b
lea ecx, [ebp - 0x44]
call fcn.00468f90
mov byte [ebp - 4], 0x3a
lea ecx, [ebp - 0xcc]
call fcn.00467350
mov byte [ebp - 4], 0xe
lea ecx, [ebp - 0x30]
call fcn.00456040
mov byte [ebp - 4], 0xd
mov edi, dword [ebp - 0x2c]
test edi, edi
je 0x510e1b
push ecx
mov edx, dword [ebp - 0x28]
mov ecx, edi
call fcn.0045c530
add esp, 4
push edi
call fcn.0047c370
add esp, 4
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 0
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x34]
call fcn.00456040
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x20]
call fcn.00456040
mov dword [ebp - 4], 0xffffffff
jmp 0x511234
mov dword [ebp - 0x1c], 0
mov ecx, 0x5a67b0
call fcn.004f06e0
push eax
lea ecx, [ebp - 0x324]
call fcn.00457210
mov byte [ebp - 4], 0x3f
push eax
mov esi, dword [ebp - 0x350]
lea edx, [esi + 0x60]
lea ecx, [ebp - 0x1c]
call fcn.00457990
add esp, 4
mov byte [ebp - 4], 0x41
lea ecx, [ebp - 0x324]
call fcn.00456040
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x510ed8
push 1
push ecx
mov ecx, esp
mov dword [ebp - 0x330], esp
push 0x5a67d8
call fcn.00457210
mov byte [ebp - 4], 0x42
lea eax, [ebp - 0x324]
push eax
mov byte [ebp - 4], 0x41
mov ecx, esi
call fcn.004fc4b0
mov byte [ebp - 4], 0x43
push eax
lea ecx, [ebp - 0x1c]
call fcn.0045be70
mov byte [ebp - 4], 0x41
lea ecx, [ebp - 0x324]
call fcn.00456040
mov eax, dword [ebp - 0x1c]
push eax
call fcn.0052dbd9
add esp, 4
mov edx, eax
mov dword [ebp - 0x338], edx
xor edi, edi
mov dword [ebp - 0x354], edi
mov eax, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x2c]
sub eax, ecx
sar eax, 2
cmp edi, eax
jge 0x51113b
cmp edi, edx
jge 0x51113b
lea esi, [ecx + edi*4]
mov dword [ebp - 0x324], esi
push dword [esi]
lea ecx, [ebp - 0x44]
call fcn.00469c10
test al, al
je 0x511129
push ecx
push dword [esi]
lea ecx, [ebp - 0x44]
call fcn.004698b0
mov ecx, eax
call fcn.00469e40
test al, al
je 0x511129
xorps xmm0, xmm0
movdqu xmmword [ebp - 0x54], xmm0
push ecx
push dword [esi]
lea ecx, [ebp - 0x44]
call fcn.004698b0
push eax
lea ecx, [ebp - 0x54]
call fcn.00468e30
mov byte [ebp - 4], 0x44
mov eax, dword [ebp - 0x334]
mov ecx, dword [eax + 4]
sub ecx, dword [eax]
mov eax, 0x66666667
imul ecx
sar edx, 3
mov esi, edx
shr esi, 0x1f
add esi, edx
lea eax, [esi + 1]
push eax
mov ecx, dword [ebp - 0x334]
call fcn.0051bcd0
lea esi, [esi + esi*4]
shl esi, 2
mov eax, dword [ebp - 0x324]
push dword [eax]
mov eax, dword [ebp - 0x334]
mov ecx, dword [eax]
add ecx, esi
call fcn.004561f0
push ecx
push str.name
lea ecx, [ebp - 0x54]
call fcn.004698b0
mov ecx, eax
sub esp, 0x18
mov eax, esp
mov dword [ebp - 0x324], esp
push eax
call fcn.00469150
mov byte [ebp - 4], 0x45
mov byte [ebp - 4], 0x44
lea ecx, [ebp - 0x330]
call fcn.00456f70
add esp, 0x18
push eax
mov byte [ebp - 4], 0x46
mov eax, dword [ebp - 0x334]
mov ecx, dword [eax]
add ecx, 4
add ecx, esi
call fcn.0045be70
mov byte [ebp - 4], 0x44
lea ecx, [ebp - 0x330]
call fcn.00456040
push ecx
push str.icon
lea ecx, [ebp - 0x54]
call fcn.004698b0
mov ecx, eax
sub esp, 0x18
mov eax, esp
mov dword [ebp - 0x324], esp
push eax
call fcn.00469150
mov byte [ebp - 4], 0x47
mov byte [ebp - 4], 0x44
lea ecx, [ebp - 0x344]
call fcn.00456f70
add esp, 0x18
push eax
mov byte [ebp - 4], 0x48
mov eax, dword [ebp - 0x334]
mov ecx, dword [eax]
add ecx, 8
add ecx, esi
call fcn.0045be70
mov byte [ebp - 4], 0x44
lea ecx, [ebp - 0x344]
call fcn.00456040
push ecx
push str.description
lea ecx, [ebp - 0x54]
call fcn.004698b0
mov ecx, eax
sub esp, 0x18
mov eax, esp
mov dword [ebp - 0x324], esp
push eax
call fcn.00469150
mov byte [ebp - 4], 0x49
mov byte [ebp - 4], 0x44
lea ecx, [ebp - 0x348]
call fcn.00456f70
add esp, 0x18
push eax
mov byte [ebp - 4], 0x4a
mov eax, dword [ebp - 0x334]
mov ecx, dword [eax]
add ecx, 0xc
add ecx, esi
call fcn.0045be70
mov byte [ebp - 4], 0x44
lea ecx, [ebp - 0x348]
call fcn.00456040
push ecx
push str.commandline
lea ecx, [ebp - 0x54]
call fcn.004698b0
mov ecx, eax
sub esp, 0x18
mov eax, esp
mov dword [ebp - 0x324], esp
push eax
call fcn.00469150
mov byte [ebp - 4], 0x4b
mov byte [ebp - 4], 0x44
lea ecx, [ebp - 0x340]
call fcn.00456f70
add esp, 0x18
push eax
mov byte [ebp - 4], 0x4c
mov eax, dword [ebp - 0x334]
mov ecx, dword [eax]
add ecx, 0x10
add ecx, esi
call fcn.0045be70
mov byte [ebp - 4], 0x44
lea ecx, [ebp - 0x340]
call fcn.00456040
mov byte [ebp - 4], 0x41
lea ecx, [ebp - 0x54]
call fcn.00468f90
inc edi
mov dword [ebp - 0x354], edi
mov edx, dword [ebp - 0x338]
jmp 0x510ef1
mov byte [ebp - 4], 0x3c
lea ecx, [ebp - 0x1c]
call fcn.00456040
mov byte [ebp - 4], 0x3b
lea ecx, [ebp - 0x44]
call fcn.00468f90
mov byte [ebp - 4], 0x3a
lea ecx, [ebp - 0xcc]
call fcn.00467350
mov dword [ebp - 4], 0xe
mov edx, dword [ebp - 0x30]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
or esi, 0xffffffff
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x511188
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov byte [ebp - 0x31e], 1
mov byte [ebp - 4], 0xd
mov edi, dword [ebp - 0x2c]
test edi, edi
je 0x5111f3
mov dword [ebp - 0x33c], edi
cmp edi, dword [ebp - 0x28]
je 0x5111d5
mov byte [ebp - 4], 0xd
mov edx, dword [edi]
sub edx, 0x10
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x5111c4
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
add edi, 4
mov dword [ebp - 0x33c], edi
cmp edi, dword [ebp - 0x28]
jne 0x5111a5
mov edi, dword [ebp - 0x2c]
push edi
call fcn.0047c370
add esp, 4
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 0
mov byte [ebp - 4], 0xa
mov edx, dword [ebp - 0x34]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x511213
mov ecx, dword [edx]
mov eax, dword [ecx]
push edx
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
mov edi, dword [ebp - 0x20]
add edi, 0xfffffff0
lea eax, [edi + 0xc]
lock xadd dword [eax], esi
dec esi
test esi, esi
jg 0x511234
mov ecx, dword [edi]
mov edx, dword [ecx]
push edi
call dword [edx + 4]
mov al, byte [ebp - 0x31e]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x18]
xor ecx, ebp
call fcn.0052ab62
mov esp, ebp
pop ebp
ret 0xc