Function at 0x4ff890
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x52233b
mov eax, dword fs:[0]
push eax
sub esp, 0x110
mov eax, dword [0x56858c]
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 eax, dword [ebx + 0x7c]
xor edi, edi
sub eax, edi
mov dword [ebp - 0xd8], ebx
je 0x4ff9cb
dec eax
je 0x4ff8dd
xor eax, eax
jmp 0x500430
or esi, 0xffffffff
cmp dword [ebx + 0x184], edi
je 0x4ff9b6
mov ecx, 0x56a4b4
call fcn.00416a20
mov ecx, dword [0x5699f0]
mov edx, dword [ecx + 0x3c]
cmp edx, edi
je 0x4ff9b6
mov eax, dword [ecx + 0x44]
cmp eax, edi
je 0x4ff913
mov eax, dword [eax + 0xc]
jmp 0x4ff915
xor eax, eax
mov ecx, dword [ecx + 0x40]
imul ecx, eax
add ecx, edx
je 0x4ff9b6
mov ecx, 0x56a4b4
call fcn.00416a20
mov eax, dword [0x5699f0]
mov ecx, dword [eax + 0x3c]
cmp ecx, edi
jne 0x4ff93d
xor eax, eax
jmp 0x4ff953
mov edx, dword [eax + 0x44]
cmp edx, edi
je 0x4ff949
mov edx, dword [edx + 0xc]
jmp 0x4ff94b
xor edx, edx
mov eax, dword [eax + 0x40]
imul eax, edx
add eax, ecx
cmp dword [eax + 0xc], 2
jne 0x50042b
xor edx, edx
cmp dword [ebx + 0x190], edi
setne dl
inc edx
cmp dword [eax + 0x10], edx
jne 0x50042b
mov ecx, 0x56a4b4
call fcn.00416a20
mov eax, dword [0x5699f0]
mov ecx, dword [eax + 0x3c]
cmp ecx, edi
jne 0x4ff98c
xor eax, eax
jmp 0x4ff9a2
mov edx, dword [eax + 0x44]
cmp edx, edi
je 0x4ff998
mov edx, dword [edx + 0xc]
jmp 0x4ff99a
xor edx, edx
mov eax, dword [eax + 0x40]
imul eax, edx
add eax, ecx
mov ecx, dword [eax + 0x14]
mov dword [eax + 8], edi
mov dword [eax + 0xc], esi
mov dword [eax + 0x10], edi
mov dword [eax + 0x14], esi
cmp ecx, 6
jne 0x4ff9bd
mov ecx, ebx
call fcn.004f73f0
mov dword [ebx + 0x184], edi
mov dword [ebx + 0x7c], esi
jmp 0x50042b
mov eax, dword [ebx]
mov edx, dword [eax + 0x90]
push 2
lea ecx, [ebp - 0x118]
push ecx
mov ecx, ebx
mov dword [ebx + 0x184], edi
mov dword [ebx + 0x190], edi
mov dword [ebp - 0xc8], 0xffffffff
call edx
mov ecx, dword [ebp - 0x118]
mov dword [ebp - 4], edi
cmp ecx, edi
je 0x4ffaf1
mov eax, dword [ebp - 0x110]
cmp eax, edi
je 0x4ffa16
mov edx, dword [eax + 0xc]
jmp 0x4ffa18
xor edx, edx
mov eax, dword [ebp - 0x114]
imul eax, edx
mov eax, dword [eax + ecx + 0x84]
mov ecx, 0x56a4bc
mov dword [ebp - 0xc8], eax
call fcn.00416ad0
mov esi, dword [0x5699f4]
mov ecx, dword [esi + 0x34]
sub ecx, dword [esi + 0x30]
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp ecx, 6
jbe 0x4ffa83
mov esi, dword [esi + 0x30]
mov ecx, dword [esi + 0x48]
cmp ecx, edi
je 0x4ffa83
mov eax, dword [esi + 0x50]
cmp eax, edi
je 0x4ffa77
mov edx, dword [eax + 0xc]
mov eax, dword [esi + 0x4c]
imul eax, edx
add eax, ecx
jmp 0x4ffa85
mov eax, dword [esi + 0x4c]
xor edx, edx
imul eax, edx
add eax, ecx
jmp 0x4ffa85
xor eax, eax
mov ecx, dword [ebp - 0xc8]
mov eax, dword [eax + 0x20]
lea edx, [ecx + ecx*2]
mov ecx, dword [eax + edx*4]
lea eax, [eax + edx*4]
cmp ecx, edi
jne 0x4ffa9f
xor eax, eax
jmp 0x4ffab5
mov edx, dword [eax + 8]
cmp edx, edi
je 0x4ffaab
mov edx, dword [edx + 0xc]
jmp 0x4ffaad
xor edx, edx
mov eax, dword [eax + 4]
imul eax, edx
add eax, ecx
mov ecx, dword [ebx + 0x18c]
mov edx, dword [eax + 4]
lea ecx, [ecx + ecx*2]
lea eax, [edx + ecx*4]
mov ecx, dword [eax]
cmp ecx, edi
jne 0x4fface
xor eax, eax
jmp 0x4ffae4
mov edx, dword [eax + 8]
cmp edx, edi
je 0x4ffada
mov edx, dword [edx + 0xc]
jmp 0x4ffadc
xor edx, edx
mov eax, dword [eax + 4]
imul eax, edx
add eax, ecx
xor ecx, ecx
cmp dword [eax], edi
setne cl
mov dword [ebx + 0x190], ecx
mov edx, dword [vtable.CCriticalSection.0]
mov eax, dword [edx]
mov ecx, 0x55925c
mov dword [ebp - 0xe4], vtable.CCriticalLock.0
mov dword [ebp - 0xe0], ecx
call eax
mov dword [ebp - 0xdc], 1
mov byte [ebp - 4], 1
cmp dword [0x5699f4], edi
jne 0x4ffb9a
push 0x68
call fcn.00503a77
mov esi, eax
add esp, 4
mov dword [ebp - 0xd0], esi
mov byte [ebp - 4], 2
cmp esi, edi
je 0x4ffb92
mov edx, dword [0x5684f8]
mov eax, dword [edx + 0xc]
mov ecx, 0x5684f8
call eax
add eax, 0x10
mov dword [esi + 0x10], eax
mov edx, dword [0x5684f8]
mov eax, dword [edx + 0xc]
mov ecx, 0x5684f8
call eax
add eax, 0x10
mov dword [esi + 0x14], eax
mov dword [esi + 0x30], edi
mov dword [esi + 0x34], edi
mov dword [esi + 0x38], edi
mov dword [esi + 0x40], edi
mov dword [esi + 0x44], edi
mov dword [esi + 0x48], edi
mov dword [esi + 0x50], edi
mov dword [esi + 0x54], edi
mov dword [esi + 0x58], edi
mov dword [esi + 0x5c], edi
mov dword [esi + 0x60], edi
mov dword [esi + 0x64], edi
jmp 0x4ffb94
xor esi, esi
mov dword [0x5699f4], esi
mov edx, dword [vtable.CCriticalSection.0]
mov eax, dword [edx + 4]
mov ecx, 0x55925c
mov byte [ebp - 4], 0
call eax
mov esi, dword [0x5699f4]
mov ecx, dword [esi + 0x34]
sub ecx, dword [esi + 0x30]
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp ecx, 1
jbe 0x4ffbf9
mov eax, dword [esi + 0x30]
mov ecx, dword [eax + 0xc]
cmp ecx, edi
je 0x4ffbf9
mov edx, dword [eax + 0x14]
cmp edx, edi
je 0x4ffbed
mov eax, dword [eax + 0x10]
mov edx, dword [edx + 0xc]
imul eax, edx
add eax, ecx
jmp 0x4ffbfb
mov eax, dword [eax + 0x10]
xor edx, edx
imul eax, edx
add eax, ecx
jmp 0x4ffbfb
xor eax, eax
movzx eax, byte [eax + 0x7b]
cmp dword [ebx + 0x190], edi
je 0x4ffc62
mov ecx, 0x56a4bc
call fcn.00416ad0
mov esi, dword [0x5699f4]
mov ecx, dword [esi + 0x34]
sub ecx, dword [esi + 0x30]
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 1
jbe 0x4ffc5c
mov eax, dword [esi + 0x30]
mov ecx, dword [eax + 0xc]
cmp ecx, edi
je 0x4ffc5c
mov edx, dword [eax + 0x14]
cmp edx, edi
je 0x4ffc50
mov eax, dword [eax + 0x10]
mov edx, dword [edx + 0xc]
imul eax, edx
add eax, ecx
jmp 0x4ffc5e
mov eax, dword [eax + 0x10]
xor edx, edx
imul eax, edx
add eax, ecx
jmp 0x4ffc5e
xor eax, eax
movzx eax, byte [eax + 0x7f]
cmp eax, edi
je 0x5003ea
mov ecx, 0x56a4b4
call fcn.00416a20
mov ecx, dword [0x5699f0]
mov edx, dword [ecx + 0x3c]
cmp edx, edi
je 0x5003ea
mov eax, dword [ecx + 0x44]
cmp eax, edi
je 0x4ffc91
mov eax, dword [eax + 0xc]
jmp 0x4ffc93
xor eax, eax
mov ecx, dword [ecx + 0x40]
imul ecx, eax
add ecx, edx
je 0x5003ea
mov ecx, 0x56a4b4
call fcn.00416a20
mov eax, dword [0x5699f0]
mov edx, dword [eax + 0x3c]
cmp edx, edi
jne 0x4ffcbb
xor ecx, ecx
jmp 0x4ffcd1
mov ecx, dword [eax + 0x44]
cmp ecx, edi
je 0x4ffcc7
mov esi, dword [ecx + 0xc]
jmp 0x4ffcc9
xor esi, esi
mov ecx, dword [eax + 0x40]
imul ecx, esi
add ecx, edx
xor edx, edx
cmp dword [ebx + 0x190], edi
setne dl
inc edx
push edx
push 2
call fcn.004b1c20
mov ecx, 0x56a4b4
call fcn.00416a20
mov ecx, dword [0x5699f0]
mov eax, dword [ecx + 0x3c]
cmp eax, edi
jne 0x4ffd00
xor ecx, ecx
jmp 0x4ffd16
mov edx, dword [ecx + 0x44]
cmp edx, edi
je 0x4ffd0c
mov edx, dword [edx + 0xc]
jmp 0x4ffd0e
xor edx, edx
mov ecx, dword [ecx + 0x40]
imul ecx, edx
add ecx, eax
call fcn.00441770
mov dword [ebp - 0xe8], eax
cmp eax, edi
je 0x5003d6
mov eax, dword [0x5684f8]
mov edx, dword [eax + 0xc]
mov ecx, 0x5684f8
call edx
add eax, 0x10
mov dword [ebp - 0xd0], eax
mov eax, dword [0x5684f8]
mov edx, dword [eax + 0xc]
mov ecx, 0x5684f8
mov byte [ebp - 4], 3
call edx
add eax, 0x10
mov dword [ebp - 0xec], eax
mov eax, dword [0x5684f8]
mov edx, dword [eax + 0xc]
mov ecx, 0x5684f8
mov byte [ebp - 4], 4
call edx
add eax, 0x10
mov dword [ebp - 0xf4], eax
mov eax, dword [0x5684f8]
mov edx, dword [eax + 0xc]
mov ecx, 0x5684f8
mov byte [ebp - 4], 5
call edx
add eax, 0x10
mov dword [ebp - 0xf0], eax
mov eax, dword [ebp - 0xc8]
inc eax
push eax
lea ecx, [ebp - 0xd0]
push str._04d
push ecx
mov byte [ebp - 4], 6
call fcn.0040c740
mov edx, dword [ebp - 0xd8]
mov eax, dword [edx + 0x18c]
inc eax
push eax
lea ecx, [ebp - 0xec]
push str._02d
push ecx
call fcn.0040c740
push 0
call fcn.005062fa
mov dword [ebp - 0xdc], edx
lea edx, [ebp - 0xe0]
mov dword [ebp - 0xe0], eax
push edx
lea eax, [ebp - 0x34]
mov ecx, 9
lea esi, [ebp - 0x58]
lea edi, [ebp - 0x34]
push eax
rep movsd dword es:[edi], dword [esi]
call fcn.00505f29
add esp, 0x24
test eax, eax
jne 0x4ffe13
mov ecx, dword [ebp - 0x30]
mov dword [ebp - 0xc8], ecx
jmp 0x4ffe1d
mov dword [ebp - 0xc8], 0xffffffff
lea edx, [ebp - 0xe0]
push edx
lea eax, [ebp - 0xc4]
mov ecx, 9
lea esi, [ebp - 0x58]
lea edi, [ebp - 0xc4]
push eax
rep movsd dword es:[edi], dword [esi]
call fcn.00505f29
add esp, 8
test eax, eax
jne 0x4ffe55
mov ecx, dword [ebp - 0xbc]
mov dword [ebp - 0xd4], ecx
jmp 0x4ffe5f
mov dword [ebp - 0xd4], 0xffffffff
lea edx, [ebp - 0xe0]
push edx
lea eax, [ebp - 0xa0]
mov ecx, 9
lea esi, [ebp - 0x58]
lea edi, [ebp - 0xa0]
push eax
rep movsd dword es:[edi], dword [esi]
call fcn.00505f29
mov ecx, 9
lea esi, [ebp - 0x58]
lea edi, [ebp - 0x7c]
neg eax
rep movsd dword es:[edi], dword [esi]
sbb ebx, ebx
lea ecx, [ebp - 0xe0]
push ecx
lea edx, [ebp - 0x7c]
not ebx
and ebx, dword [ebp - 0x94]
push edx
call fcn.00505f29
add esp, 0x10
test eax, eax
jne 0x4ffebe
mov eax, dword [ebp - 0x6c]
inc eax
mov dword [ebp - 0xcc], eax
jmp 0x4ffec8
mov dword [ebp - 0xcc], 0
mov ecx, 9
lea esi, [ebp - 0x7c]
lea edi, [ebp - 0x58]
rep movsd dword es:[edi], dword [esi]
lea ecx, [ebp - 0xe0]
push ecx
lea edx, [ebp - 0x58]
push edx
call fcn.00505f29
add esp, 8
test eax, eax
jne 0x4ffef7
mov ecx, dword [ebp - 0x44]
add ecx, 0x76c
jmp 0x4ffef9
xor ecx, ecx
mov eax, dword [ebp - 0xc8]
mov edx, dword [ebp - 0xd4]
push eax
mov eax, dword [ebp - 0xcc]
push edx
push ebx
push eax
mov eax, 0x51eb851f
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
imul eax, eax, 0x64
sub ecx, eax
push ecx
lea ecx, [ebp - 0xf4]
push str._02d__02d__02d_r_n____02d:_02d
push ecx
call fcn.0040c740
mov edx, dword [0x5684f8]
mov eax, dword [edx + 0xc]
add esp, 0x1c
mov ecx, 0x5684f8
call eax
add eax, 0x10
mov dword [ebp - 0xc8], eax
mov ecx, 0x56a4b4
mov byte [ebp - 4], 7
call fcn.00416a20
mov ecx, dword [0x5699f0]
call fcn.0044dfe0
mov ebx, dword [eax + 0x70]
cmp ebx, 0xffffffff
je 0x5000fd
xor edi, edi
mov dword [ebp - 0x34], edi
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x28], edi
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x14], edi
mov ecx, 0x56a4bc
mov byte [ebp - 4], 8
call fcn.00416ad0
mov esi, dword [0x5699f4]
mov ecx, dword [esi + 0x34]
sub ecx, dword [esi + 0x30]
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp ecx, 1
jbe 0x4fffee
mov eax, dword [esi + 0x30]
mov ecx, dword [eax + 0xc]
cmp ecx, edi
je 0x4fffee
mov edx, dword [eax + 0x14]
cmp edx, edi
je 0x4fffe2
mov eax, dword [eax + 0x10]
mov edx, dword [edx + 0xc]
imul eax, edx
add eax, ecx
jmp 0x4ffff0
mov eax, dword [eax + 0x10]
xor edx, edx
imul eax, edx
add eax, ecx
jmp 0x4ffff0
xor eax, eax
mov ecx, eax
call fcn.004088c0
xor edx, edx
test al, al
sete dl
mov ecx, 0x56a4b4
mov esi, edx
call fcn.00416a20
mov eax, dword [0x5699f0]
mov ecx, dword [eax]
cmp ecx, edi
jne 0x500019
xor eax, eax
jmp 0x50002f
mov edx, dword [eax + 8]
cmp edx, edi
je 0x500025
mov edx, dword [edx + 0xc]
jmp 0x500027
xor edx, edx
mov eax, dword [eax + 4]
imul eax, edx
add eax, ecx
mov edx, dword [eax + 0x18]
cmp edx, edi
jne 0x50003a
xor eax, eax
jmp 0x500050
mov ecx, dword [eax + 0x20]
cmp ecx, edi
je 0x500046
mov ecx, dword [ecx + 0xc]
jmp 0x500048
xor ecx, ecx
mov eax, dword [eax + 0x1c]
imul eax, ecx
add eax, edx
push edi
push esi
lea ecx, [ebp - 0x34]
push ecx
push ebx
mov ecx, eax
call fcn.00422460
test eax, eax
jns 0x50007d
push 0x5455d8
lea edx, [ebp - 0x108]
push edx
mov dword [ebp - 0x108], 1
call fcn.005036c5
cmp dword [ebp - 0x1c], edi
jne 0x50009d
push 0x5455d8
lea eax, [ebp - 0x100]
push eax
mov dword [ebp - 0x100], 1
call fcn.005036c5
lea ecx, [ebp - 0x1c]
call fcn.00406d00
mov edx, dword [eax]
mov edx, dword [edx + 4]
lea ecx, [ebp - 0xfc]
push ecx
mov ecx, eax
call edx
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0xf8]
mov byte [ebp - 4], 9
call fcn.004c9af0
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0xc8]
mov byte [ebp - 4], 0xa
call fcn.0040e370
lea ecx, [ebp - 0xf8]
call fcn.00403500
lea ecx, [ebp - 0xfc]
call fcn.00403500
lea ecx, [ebp - 0x34]
mov byte [ebp - 4], 7
call fcn.0043ba60
jmp 0x500156
mov ecx, 0x56a4b4
call fcn.00416a20
mov ecx, dword [0x5699f0]
lea eax, [ebp - 0x104]
push eax
call fcn.0044dfe0
mov ecx, eax
call fcn.00441190
push eax
lea ecx, [ebp - 0xc8]
mov byte [ebp - 4], 0xb
call fcn.00409050
mov eax, dword [ebp - 0x104]
add eax, 0xfffffff0
mov byte [ebp - 4], 7
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x500156
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov esi, dword [ebp - 0xc8]
push 2
push 0x28
push esi
lea ecx, [ebp - 0x10c]
call fcn.004bd650
lea ecx, [ebp - 0xcc]
push ecx
mov ecx, eax
mov byte [ebp - 4], 0xc
call fcn.004b1ab0
lea edx, [ebp - 0xcc]
push edx
lea ecx, [ebp - 0xf0]
mov byte [ebp - 4], 0xd
call fcn.00409050
mov eax, dword [ebp - 0xcc]
add eax, 0xfffffff0
mov byte [ebp - 4], 0xc
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5001ba
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x10c]
add eax, 0xfffffff0
mov byte [ebp - 4], 7
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5001e0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [esi - 0x10]
mov byte [ebp - 4], 6
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x500200
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, dword [ebp - 0xf0]
push 1
push ecx
add edi, 0xfffffff0
mov dword [ebp - 0xc8], esp
mov esi, esp
push edi
call fcn.00401650
add eax, 0x10
mov dword [esi], eax
mov ebx, dword [ebp - 0xf4]
add ebx, 0xfffffff0
mov dword [ebp - 0x11c], esp
mov esi, esp
push ebx
mov byte [ebp - 4], 0xe
call fcn.00401650
add eax, 0x10
mov dword [esi], eax
mov eax, dword [ebp - 0xec]
add eax, 0xfffffff0
mov dword [ebp - 0xdc], esp
mov esi, esp
push eax
mov byte [ebp - 4], 0xf
mov dword [ebp - 0xcc], eax
call fcn.00401650
add eax, 0x10
mov dword [esi], eax
mov eax, dword [ebp - 0xd0]
add eax, 0xfffffff0
mov dword [ebp - 0xd4], esp
mov esi, esp
push eax
mov byte [ebp - 4], 0x10
mov dword [ebp - 0xd4], eax
call fcn.00401650
mov ecx, dword [ebp - 0xe8]
add eax, 0x10
mov dword [esi], eax
add esp, 4
mov byte [ebp - 4], 6
call fcn.004c2920
mov ecx, 0x56a4bc
call fcn.00416ad0
mov esi, dword [0x5699f4]
mov ecx, dword [esi + 0x34]
sub ecx, dword [esi + 0x30]
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp ecx, 1
jbe 0x5002f2
mov esi, dword [esi + 0x30]
mov eax, dword [esi + 0xc]
test eax, eax
je 0x5002f2
mov ecx, dword [esi + 0x14]
test ecx, ecx
je 0x5002e6
mov esi, dword [esi + 0x10]
mov ecx, dword [ecx + 0xc]
imul esi, ecx
add esi, eax
jmp 0x5002f4
mov esi, dword [esi + 0x10]
xor ecx, ecx
imul esi, ecx
add esi, eax
jmp 0x5002f4
xor esi, esi
cmp byte [esi + 0x78], 0
je 0x50031d
mov ecx, 0x56a4b4
call fcn.00416a20
mov ecx, dword [0x5699f0]
sub esp, 0xc
mov edx, esp
mov dword [ebp - 0xdc], esp
push edx
call fcn.0044e090
jmp 0x50034b
mov eax, dword [ebp - 0xd8]
mov eax, dword [eax + 0x164]
mov edx, dword [eax]
sub esp, 0xc
mov ecx, esp
mov dword [ecx], edx
mov edx, dword [eax + 4]
mov dword [ecx + 4], edx
mov eax, dword [eax + 8]
mov dword [ebp - 0xdc], esp
mov dword [ecx + 8], eax
test eax, eax
je 0x50034b
inc dword [eax + 4]
mov ecx, dword [ebp - 0xe8]
call fcn.0043e720
mov byte [ebp - 4], 5
lea eax, [edi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x500373
mov ecx, dword [edi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push edi
call eax
mov byte [ebp - 4], 4
lea ecx, [ebx + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x500390
mov ecx, dword [ebx]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push ebx
call edx
mov eax, dword [ebp - 0xcc]
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5003b3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0xd4]
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5003d6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0xd8]
mov dword [ecx + 0x184], 1
xor edi, edi
mov ebx, ecx
mov eax, dword [ebp - 0x110]
mov dword [ebp - 4], 0xffffffff
cmp eax, edi
je 0x500424
dec dword [eax + 4]
mov ecx, eax
cmp dword [eax + 4], edi
jne 0x500424
cmp byte [ecx + 8], 0
je 0x500411
mov edx, dword [ecx]
mov eax, dword [edx]
call eax
mov ecx, dword [ebp - 0x110]
cmp ecx, edi
je 0x500424
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push 1
call eax
mov dword [ebx + 0x7c], 1
mov eax, 1
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.00503edb
mov esp, ebp
pop ebp
ret