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

Disassembly:
push 0xffffffffffffffff
push 0x87707a
mov eax, dword fs:[0]
push eax
sub esp, 0x30
push ebx
push ebp
push esi
push edi
mov eax, dword [0x8ce6f4]
xor eax, esp
push eax
lea eax, [esp + 0x44]
mov dword fs:[0], eax
mov ebx, ecx
mov dword [esp + 0x30], ebx
call fcn.007cff5d
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x5ce577
push 0x80004005
call fcn.004a8210
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x14], eax
mov esi, dword [esp + 0x54]
xor edi, edi
mov ecx, esi
mov dword [esp + 0x4c], edi
call fcn.004afe70
lea ecx, [esp + 0x3c]
push ebx
push ecx
mov dword [esp + 0x5c], edi
call fcn.005c7660
lea ebp, [ebx + 0x10]
lea edx, [esp + 0x40]
push ebp
push edx
mov byte [esp + 0x5c], 1
call fcn.005c7660
lea edi, [ebx + 0x2c]
lea eax, [esp + 0x44]
push edi
push eax
mov byte [esp + 0x64], 2
call fcn.005c7660
add esp, 0x18
push 0
lea ecx, [esp + 0x2c]
push ecx
mov ecx, ebx
mov byte [esp + 0x54], 3
call fcn.005cd860
push 0x402308
push eax
lea edx, [esp + 0x34]
push edx
mov byte [esp + 0x58], 4
call fcn.004af3d0
add esp, 0xc
push eax
mov ecx, esi
mov byte [esp + 0x50], 5
call fcn.004b34a0
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
mov byte [esp + 0x4c], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5ce62d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
mov byte [esp + 0x4c], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5ce652
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 0x430a14
lea ecx, [esp + 0x28]
call fcn.004a8f10
lea ecx, [esp + 0x24]
push ecx
mov ecx, esi
mov byte [esp + 0x50], 6
call fcn.004b34a0
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x4c], 3
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x5ce696
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push ebx
mov ecx, 0x8d4662
call fcn.005da4e0
push eax
lea ecx, [esp + 0x30]
call fcn.004b2080
mov ecx, dword [esp + 0x3c]
mov edx, dword [eax]
push ecx
push edx
lea eax, [esp + 0x1c]
push 0x4309f0
push eax
mov byte [esp + 0x5c], 7
call fcn.004aa600
mov eax, dword [esp + 0x3c]
add eax, 0xfffffff0
add esp, 0x10
mov byte [esp + 0x4c], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5ce6ef
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x14]
push ecx
mov ecx, esi
call fcn.004b34a0
push ebp
mov ecx, 0x8d4662
call fcn.005da4e0
push eax
lea ecx, [esp + 0x30]
call fcn.004b2080
mov edx, dword [esp + 0x38]
mov eax, dword [eax]
push edx
push eax
lea ecx, [esp + 0x1c]
push 0x4309d0
push ecx
mov byte [esp + 0x5c], 8
call fcn.004aa600
mov eax, dword [esp + 0x3c]
add eax, 0xfffffff0
add esp, 0x10
mov byte [esp + 0x4c], 3
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x5ce754
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x14]
push ecx
mov ecx, esi
call fcn.004b34a0
push edi
mov ecx, 0x8d4662
call fcn.005da4e0
push eax
lea ecx, [esp + 0x30]
call fcn.004b2080
mov edx, dword [esp + 0x34]
mov eax, dword [eax]
push edx
push eax
lea ecx, [esp + 0x1c]
push 0x4309ac
push ecx
mov byte [esp + 0x5c], 9
call fcn.004aa600
mov eax, dword [esp + 0x3c]
add eax, 0xfffffff0
add esp, 0x10
mov byte [esp + 0x4c], 3
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x5ce7b9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x14]
push ecx
mov ecx, esi
call fcn.004b34a0
mov edx, dword [ebx + 0x20]
push edx
lea eax, [esp + 0x18]
push 0x430980
push eax
call fcn.004aa600
add esp, 0xc
lea ecx, [esp + 0x14]
push ecx
mov ecx, esi
call fcn.004b34a0
mov edx, dword [ebx + 0x24]
push edx
lea eax, [esp + 0x18]
push 0x43094c
push eax
call fcn.004aa600
add esp, 0xc
lea ecx, [esp + 0x14]
push ecx
mov ecx, esi
call fcn.004b34a0
mov edx, dword [ebx + 0x28]
push edx
lea eax, [esp + 0x18]
push 0x43092c
push eax
call fcn.004aa600
add esp, 0xc
lea ecx, [esp + 0x14]
push ecx
mov ecx, esi
call fcn.004b34a0
mov edx, dword [ebx + 0x40]
push edx
lea eax, [esp + 0x18]
push 0x430910
push eax
call fcn.004aa600
add esp, 0xc
lea ecx, [esp + 0x14]
push ecx
mov ecx, esi
call fcn.004b34a0
push 0x402a88
lea ecx, [esp + 0x28]
call fcn.004a8f10
lea edx, [esp + 0x24]
push edx
mov ecx, esi
mov byte [esp + 0x50], 0xa
call fcn.004b34a0
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x4c], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5ce891
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 0x40bda4
push edi
call fcn.004c17a0
add esp, 8
test eax, eax
jne 0x5cf1e4
push 0x40bdb4
push edi
call fcn.004c17a0
add esp, 8
test eax, eax
jne 0x5cf1e4
push 0x40bdd4
push edi
call fcn.004c17a0
add esp, 8
test eax, eax
jne 0x5cf1e4
push 0x40bf74
push edi
call fcn.004c17a0
add esp, 8
test eax, eax
jne 0x5cf1e4
push 0x40bdc4
push edi
call fcn.004c17a0
add esp, 8
test eax, eax
jne 0x5ced83
push 0x407a1c
push edi
call fcn.004c17a0
add esp, 8
test eax, eax
jne 0x5ced83
push 0x4077cc
push edi
call fcn.004c17a0
add esp, 8
test eax, eax
je 0x5cea66
mov edi, dword [ebx + 0x44]
push 0x4308f4
lea ecx, [esp + 0x28]
mov dword [esp + 0x58], 0x18
call fcn.004a8f10
lea ecx, [esp + 0x24]
push ecx
mov ecx, esi
mov byte [esp + 0x50], 0x1e
call fcn.004b34a0
lea ecx, [esp + 0x24]
mov byte [esp + 0x4c], 3
call fcn.004a8c20
movzx edx, word [edi]
push edx
lea eax, [esp + 0x18]
push 0x4308d8
push eax
call fcn.004aa600
add esp, 0xc
lea ecx, [esp + 0x14]
push ecx
mov ecx, esi
call fcn.004b34a0
mov edx, dword [edi + 4]
push edx
lea eax, [esp + 0x18]
push 0x4308b0
push eax
call fcn.004aa600
add esp, 0xc
lea ecx, [esp + 0x14]
push ecx
mov ecx, esi
call fcn.004b34a0
mov edx, dword [edi + 8]
push edx
lea eax, [esp + 0x18]
push 0x430888
push eax
call fcn.004aa600
add esp, 0xc
lea ecx, [esp + 0x14]
push ecx
mov ecx, esi
call fcn.004b34a0
mov edx, dword [edi + 0xc]
push edx
lea eax, [esp + 0x18]
push 0x430860
push eax
call fcn.004aa600
add esp, 0xc
lea ecx, [esp + 0x14]
push ecx
mov ecx, esi
call fcn.004b34a0
mov edx, dword [edi + 0x10]
push edx
lea eax, [esp + 0x18]
push 0x430838
push eax
call fcn.004aa600
add esp, 0xc
lea ecx, [esp + 0x14]
push ecx
mov ecx, esi
call fcn.004b34a0
fld dword [edi + 0x14]
sub esp, 8
fstp qword [esp]
lea edx, [esp + 0x1c]
push 0x430818
push edx
call fcn.004aa600
add esp, 0x10
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
push 0x402a88
lea ecx, [esp + 0x24]
call fcn.004a8f10
lea ecx, [esp + 0x20]
push ecx
mov ecx, esi
mov byte [esp + 0x50], 0x1f
call fcn.004b34a0
lea ecx, [esp + 0x20]
mov byte [esp + 0x4c], 3
call fcn.004a8c20
jmp 0x5cf94d
push 0x4077ec
push edi
call fcn.004c17a0
add esp, 8
test eax, eax
je 0x5ceb75
mov edi, dword [ebx + 0x44]
push 0x4308f4
lea ecx, [esp + 0x28]
mov dword [esp + 0x58], 0x18
call fcn.004a8f10
lea edx, [esp + 0x24]
push edx
mov ecx, esi
mov byte [esp + 0x50], 0x20
call fcn.004b34a0
lea ecx, [esp + 0x24]
mov byte [esp + 0x4c], 3
call fcn.004a8c20
mov eax, dword [edi]
push eax
lea ecx, [esp + 0x18]
push 0x4307fc
push ecx
call fcn.004aa600
add esp, 0xc
lea edx, [esp + 0x14]
push edx
mov ecx, esi
call fcn.004b34a0
mov eax, dword [edi + 4]
push eax
lea ecx, [esp + 0x18]
push 0x4307d8
push ecx
call fcn.004aa600
add esp, 0xc
lea edx, [esp + 0x14]
push edx
mov ecx, esi
call fcn.004b34a0
mov eax, dword [edi + 8]
push eax
lea ecx, [esp + 0x18]
push 0x4307b4
push ecx
call fcn.004aa600
add esp, 0xc
lea edx, [esp + 0x14]
push edx
mov ecx, esi
call fcn.004b34a0
mov eax, dword [edi + 0x14]
mov ecx, dword [edi + 0x10]
mov edx, dword [edi + 0xc]
push eax
push ecx
push edx
lea eax, [esp + 0x20]
push 0x430780
push eax
call fcn.004aa600
add esp, 0x14
lea ecx, [esp + 0x14]
push ecx
mov ecx, esi
call fcn.004b34a0
push 0x402a88
lea ecx, [esp + 0x24]
call fcn.004a8f10
mov byte [esp + 0x4c], 0x21
lea edx, [esp + 0x20]
push edx
mov ecx, esi
call fcn.004b34a0
lea ecx, [esp + 0x20]
mov byte [esp + 0x4c], 3
call fcn.004a8c20
jmp 0x5cf94d
push 0x40787c
push edi
call fcn.004c17a0
add esp, 8
test eax, eax
je 0x5cf94d
mov ebp, dword [ebx + 0x44]
push 0x430764
lea ecx, [esp + 0x28]
mov dword [esp + 0x58], 0x208
call fcn.004a8f10
lea eax, [esp + 0x24]
push eax
mov ecx, esi
mov byte [esp + 0x50], 0x22
call fcn.004b34a0
lea ecx, [esp + 0x24]
mov byte [esp + 0x4c], 3
call fcn.004a8c20
mov ecx, dword [ebp]
push ecx
lea edx, [esp + 0x18]
push 0x430748
push edx
call fcn.004aa600
add esp, 0xc
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
lea edi, [ebp + 4]
call fcn.007cff5d
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x5cec02
push 0x80004005
call fcn.004a8210
test edi, edi
jne 0x5cec10
push 0x80070057
call fcn.004a8210
mov edx, dword [eax]
push 1
mov ecx, eax
mov eax, dword [edx]
push 3
call eax
test eax, eax
jne 0x5cec25
call fcn.004a8580
cmp dword [eax + 8], 3
lea edi, [eax + 0x10]
mov dword [esp + 0x28], edi
jge 0x5cec3c
push 0x80070057
call fcn.004a8210
push 3
lea eax, [ebp + 4]
push eax
push 3
mov dword [edi - 0xc], 3
push edi
mov byte [edi + 3], 0
call fcn.0080217f
add esp, 0x10
push edi
lea ecx, [esp + 0x30]
mov byte [esp + 0x50], 0x23
call fcn.004b2080
mov ecx, dword [eax]
push ecx
lea edx, [esp + 0x18]
push 0x430730
push edx
mov byte [esp + 0x58], 0x24
call fcn.004aa600
add esp, 0xc
lea ecx, [esp + 0x2c]
call fcn.004a8c20
lea ecx, [esp + 0x28]
mov byte [esp + 0x4c], 3
call fcn.004a8c20
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
add ebp, 8
call fcn.007cff5d
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x5cecc1
push 0x80004005
call fcn.004a8210
test ebp, ebp
jne 0x5ceccf
push 0x80070057
call fcn.004a8210
mov edx, dword [eax]
push 2
mov ecx, eax
mov eax, dword [edx]
push 0x1ff
call eax
test eax, eax
jne 0x5cece7
call fcn.004a8580
lea edi, [eax + 0x10]
mov eax, 0x1ff
mov dword [esp + 0x2c], edi
cmp dword [edi - 8], eax
jge 0x5ced02
push 0x80070057
call fcn.004a8210
push 0x3fe
push ebp
xor ecx, ecx
push 0x3fe
mov dword [edi - 0xc], eax
push edi
mov word [edi + 0x3fe], cx
call fcn.0080217f
push edi
lea edx, [esp + 0x28]
push 0x430714
push edx
mov byte [esp + 0x68], 0x25
call fcn.004aa600
add esp, 0x1c
lea ecx, [esp + 0x2c]
mov byte [esp + 0x4c], 3
call fcn.004a8c20
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
push 0x402a88
lea ecx, [esp + 0x28]
call fcn.004a8f10
lea ecx, [esp + 0x24]
push ecx
mov ecx, esi
mov byte [esp + 0x50], 0x26
call fcn.004b34a0
lea ecx, [esp + 0x24]
mov byte [esp + 0x4c], 3
call fcn.004a8c20
jmp 0x5cf94d
push 0x407a1c
push edi
call fcn.004c17a0
add esp, 8
test eax, eax
je 0x5cee25
mov ebp, dword [ebx + 0x44]
push 0x4306ec
lea ecx, [esp + 0x28]
mov dword [esp + 0x58], 0x18
lea edi, [ebp + 4]
call fcn.004a8f10
lea edx, [esp + 0x24]
push edx
mov ecx, esi
mov byte [esp + 0x50], 0x15
call fcn.004b34a0
lea ecx, [esp + 0x24]
mov byte [esp + 0x4c], 3
call fcn.004a8c20
mov eax, dword [ebp]
push eax
lea ecx, [esp + 0x18]
push 0x4306c8
push ecx
call fcn.004aa600
add esp, 0xc
lea edx, [esp + 0x14]
push edx
mov ecx, esi
call fcn.004b34a0
push 0x402a88
lea ecx, [esp + 0x28]
call fcn.004a8f10
lea eax, [esp + 0x24]
push eax
mov ecx, esi
mov byte [esp + 0x50], 0x16
call fcn.004b34a0
lea ecx, [esp + 0x24]
mov byte [esp + 0x4c], 3
call fcn.004a8c20
jmp 0x5cee30
mov edi, dword [ebx + 0x44]
mov dword [esp + 0x54], 0x12
push 0x4306ac
lea ecx, [esp + 0x28]
call fcn.004a8f10
lea ecx, [esp + 0x24]
push ecx
mov ecx, esi
mov byte [esp + 0x50], 0x17
call fcn.004b34a0
lea ecx, [esp + 0x24]
mov byte [esp + 0x4c], 3
call fcn.004a8c20
movzx edx, word [edi]
push edx
lea eax, [esp + 0x18]
push 0x430684
push eax
call fcn.004aa600
add esp, 0xc
lea ecx, [esp + 0x14]
push ecx
mov ecx, esi
call fcn.004b34a0
movzx edx, word [edi + 2]
push edx
lea eax, [esp + 0x18]
push 0x4308d8
push eax
call fcn.004aa600
add esp, 0xc
lea ecx, [esp + 0x14]
push ecx
mov ecx, esi
call fcn.004b34a0
mov edx, dword [edi + 4]
push edx
lea eax, [esp + 0x18]
push 0x4308b0
push eax
call fcn.004aa600
add esp, 0xc
lea ecx, [esp + 0x14]
push ecx
mov ecx, esi
call fcn.004b34a0
mov edx, dword [edi + 8]
push edx
lea eax, [esp + 0x18]
push 0x43065c
push eax
call fcn.004aa600
add esp, 0xc
lea ecx, [esp + 0x14]
push ecx
mov ecx, esi
call fcn.004b34a0
movzx edx, word [edi + 0xc]
push edx
lea eax, [esp + 0x18]
push 0x43063c
push eax
call fcn.004aa600
add esp, 0xc
lea ecx, [esp + 0x14]
push ecx
mov ecx, esi
call fcn.004b34a0
movzx edx, word [edi + 0xe]
push edx
lea eax, [esp + 0x18]
push 0x430614
push eax
call fcn.004aa600
add esp, 0xc
lea ecx, [esp + 0x14]
push ecx
mov ecx, esi
call fcn.004b34a0
movzx edx, word [edi + 0x10]
push edx
push 0x4305e0
lea eax, [esp + 0x1c]
push eax
call fcn.004aa600
add esp, 0xc
lea ecx, [esp + 0x14]
push ecx
mov ecx, esi
call fcn.004b34a0
push 0x402a88
lea ecx, [esp + 0x28]
call fcn.004a8f10
lea edx, [esp + 0x24]
push edx
mov ecx, esi
mov byte [esp + 0x50], 0x18
call fcn.004b34a0
lea ecx, [esp + 0x24]
mov byte [esp + 0x4c], 3
call fcn.004a8c20
movzx ebp, word [edi]
cmp ebp, 1
je 0x5cf94d
movzx edi, word [edi + 0x10]
test di, di
je 0x5cf94d
lea eax, [ebx + 0x2c]
push 0x40bdc4
push eax
call fcn.004c17a0
add esp, 8
test eax, eax
je 0x5cf94d
mov eax, 0xfffe
cmp bp, ax
jne 0x5cf0ce
cmp edi, 0x16
jne 0x5cf0ce
mov edi, dword [ebx + 0x44]
push 0x4305b4
lea ecx, [esp + 0x28]
mov dword [esp + 0x58], 0x28
call fcn.004a8f10
lea ecx, [esp + 0x24]
push ecx
mov ecx, esi
mov byte [esp + 0x50], 0x19
call fcn.004b34a0
lea ecx, [esp + 0x24]
mov byte [esp + 0x4c], 3
call fcn.004a8c20
cmp word [edi + 0xe], 0
je 0x5cf015
movzx edx, word [edi + 0x12]
push edx
push 0x430584
lea eax, [esp + 0x1c]
push eax
jmp 0x5cf024
movzx ecx, word [edi + 0x12]
push ecx
push 0x430558
lea edx, [esp + 0x1c]
push edx
call fcn.004aa600
add esp, 0xc
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
mov ecx, dword [edi + 0x14]
push ecx
lea edx, [esp + 0x18]
push 0x43052c
push edx
call fcn.004aa600
add esp, 0xc
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
add edi, 0x18
lea ecx, [esp + 0x2c]
push edi
push ecx
call fcn.005c7660
mov edx, dword [eax]
push edx
lea eax, [esp + 0x20]
push 0x430510
push eax
mov byte [esp + 0x60], 0x1a
call fcn.004aa600
add esp, 0x14
lea ecx, [esp + 0x2c]
mov byte [esp + 0x4c], 3
call fcn.004a8c20
lea ecx, [esp + 0x14]
push ecx
mov ecx, esi
call fcn.004b34a0
push 0x402a88
lea ecx, [esp + 0x28]
call fcn.004a8f10
lea edx, [esp + 0x24]
push edx
mov ecx, esi
mov byte [esp + 0x50], 0x1b
call fcn.004b34a0
lea ecx, [esp + 0x24]
mov byte [esp + 0x4c], 3
call fcn.004a8c20
jmp 0x5cf94d
mov eax, 0x2000
cmp bp, ax
jne 0x5cf94d
cmp edi, 5
jne 0x5cf94d
mov edi, dword [ebx + 0x44]
push 0x4304e8
lea ecx, [esp + 0x28]
mov dword [esp + 0x58], 0x17
call fcn.004a8f10
lea ecx, [esp + 0x24]
push ecx
mov ecx, esi
mov byte [esp + 0x50], 0x1c
call fcn.004b34a0
lea ecx, [esp + 0x24]
mov byte [esp + 0x4c], 3
call fcn.004a8c20
movzx edx, byte [edi + 0x12]
push edx
lea eax, [esp + 0x18]
push 0x4304c8
push eax
call fcn.004aa600
add esp, 0xc
lea ecx, [esp + 0x14]
push ecx
mov ecx, esi
call fcn.004b34a0
movzx edx, byte [edi + 0x13]
push edx
lea eax, [esp + 0x18]
push 0x4304b4
push eax
call fcn.004aa600
add esp, 0xc
lea ecx, [esp + 0x14]
push ecx
mov ecx, esi
call fcn.004b34a0
movzx edx, byte [edi + 0x14]
push edx
lea eax, [esp + 0x18]
push 0x4304a0
push eax
call fcn.004aa600
add esp, 0xc
lea ecx, [esp + 0x14]
push ecx
mov ecx, esi
call fcn.004b34a0
movzx edx, byte [edi + 0x15]
push edx
lea eax, [esp + 0x18]
push 0x430480
push eax
call fcn.004aa600
add esp, 0xc
lea ecx, [esp + 0x14]
push ecx
mov ecx, esi
call fcn.004b34a0
movzx edx, byte [edi + 0x16]
push edx
lea eax, [esp + 0x18]
push 0x43045c
push eax
call fcn.004aa600
add esp, 0xc
lea ecx, [esp + 0x14]
push ecx
mov ecx, esi
call fcn.004b34a0
push 0x402a88
lea ecx, [esp + 0x24]
call fcn.004a8f10
mov byte [esp + 0x4c], 0x1d
jmp 0x5ceb56
push 0x40bda4
push edi
call fcn.004c17a0
add esp, 8
test eax, eax
je 0x5cf200
mov dword [esp + 0x54], 0x58
jmp 0x5cf253
push 0x40bdb4
push edi
call fcn.004c17a0
add esp, 8
test eax, eax
je 0x5cf21c
mov dword [esp + 0x54], 0x70
jmp 0x5cf253
push 0x40bdd4
push edi
call fcn.004c17a0
add esp, 8
test eax, eax
je 0x5cf238
mov dword [esp + 0x54], 0x67
jmp 0x5cf253
push 0x40bf74
push edi
call fcn.004c17a0
add esp, 8
neg eax
sbb eax, eax
and eax, 0x84
mov dword [esp + 0x54], eax
mov edi, dword [ebx + 0x44]
push 0x430438
lea ecx, [esp + 0x28]
lea ebp, [edi + 0x30]
call fcn.004a8f10
lea eax, [esp + 0x24]
push eax
mov ecx, esi
mov byte [esp + 0x50], 0xb
call fcn.004b34a0
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x4c], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5cf29d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [edi + 0xc]
mov edx, dword [edi + 8]
mov eax, dword [edi + 4]
push ecx
mov ecx, dword [edi]
push edx
push eax
push ecx
lea edx, [esp + 0x24]
push 0x430404
push edx
call fcn.004aa600
add esp, 0x18
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
mov ecx, dword [edi + 0x1c]
mov edx, dword [edi + 0x18]
mov eax, dword [edi + 0x14]
push ecx
mov ecx, dword [edi + 0x10]
push edx
push eax
push ecx
lea edx, [esp + 0x24]
push 0x4303d0
push edx
call fcn.004aa600
add esp, 0x18
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
mov ecx, dword [edi + 0x20]
push ecx
lea edx, [esp + 0x18]
push 0x4303b4
push edx
call fcn.004aa600
add esp, 0xc
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
mov ecx, dword [edi + 0x24]
push ecx
lea edx, [esp + 0x18]
push 0x43038c
push edx
call fcn.004aa600
add esp, 0xc
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
mov ecx, dword [edi + 0x2c]
mov edx, dword [edi + 0x28]
push ecx
push edx
lea eax, [esp + 0x1c]
push 0x43035c
push eax
call fcn.004aa600
add esp, 0x10
lea ecx, [esp + 0x14]
push ecx
mov ecx, esi
call fcn.004b34a0
push 0x402a88
lea ecx, [esp + 0x28]
call fcn.004a8f10
lea edx, [esp + 0x24]
push edx
mov ecx, esi
mov byte [esp + 0x50], 0xc
call fcn.004b34a0
mov eax, dword [esp + 0x24]
mov byte [esp + 0x4c], 3
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5cf3a6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 0x40bdb4
lea edi, [ebx + 0x2c]
push edi
call fcn.004c17a0
add esp, 8
test eax, eax
jne 0x5cf3d1
push 0x40bf74
push edi
call fcn.004c17a0
add esp, 8
test eax, eax
je 0x5cf52b
mov edi, dword [ebx + 0x44]
push 0x430338
lea ecx, [esp + 0x28]
lea ebp, [edi + 0x48]
call fcn.004a8f10
lea ecx, [esp + 0x24]
push ecx
mov ecx, esi
mov byte [esp + 0x50], 0xd
call fcn.004b34a0
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x4c], 3
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x5cf41b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [edi + 0x30]
push ecx
lea edx, [esp + 0x18]
push 0x430304
push edx
call fcn.004aa600
add esp, 0xc
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
mov ecx, dword [edi + 0x34]
push ecx
lea edx, [esp + 0x18]
push 0x4302cc
push edx
call fcn.004aa600
add esp, 0xc
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
mov ecx, dword [edi + 0x38]
push ecx
lea edx, [esp + 0x18]
push 0x43029c
push edx
call fcn.004aa600
add esp, 0xc
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
mov ecx, dword [edi + 0x3c]
push ecx
lea edx, [esp + 0x18]
push 0x43026c
push edx
call fcn.004aa600
add esp, 0xc
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
mov ecx, dword [edi + 0x40]
push ecx
lea edx, [esp + 0x18]
push 0x43023c
push edx
call fcn.004aa600
add esp, 0xc
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
mov ecx, dword [edi + 0x44]
push ecx
lea edx, [esp + 0x18]
push 0x430214
push edx
call fcn.004aa600
add esp, 0xc
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
push 0x402a88
lea ecx, [esp + 0x28]
call fcn.004a8f10
lea ecx, [esp + 0x24]
push ecx
mov ecx, esi
mov byte [esp + 0x50], 0xe
call fcn.004b34a0
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x4c], 3
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x5cf52b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 0x40bdd4
lea edi, [ebx + 0x2c]
push edi
call fcn.004c17a0
add esp, 8
test eax, eax
je 0x5cf5e7
mov edi, dword [ebx + 0x44]
push 0x4301f4
lea ecx, [esp + 0x28]
call fcn.004a8f10
lea ecx, [esp + 0x24]
push ecx
mov ecx, esi
mov byte [esp + 0x50], 0xf
call fcn.004b34a0
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x4c], 3
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x5cf58b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [edi + 0x58]
push ecx
lea edx, [esp + 0x18]
push 0x4301cc
push edx
call fcn.004aa600
add esp, 0xc
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
mov ecx, dword [edi + 0x5c]
push ecx
lea edx, [esp + 0x18]
push 0x4301a0
push edx
call fcn.004aa600
add esp, 0xc
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
push 0x402a88
lea ecx, [esp + 0x28]
call fcn.004a8f10
mov byte [esp + 0x4c], 0x10
jmp 0x5cf704
push 0x40bf74
push edi
call fcn.004c17a0
add esp, 8
test eax, eax
je 0x5cf735
mov edi, dword [ebx + 0x44]
push 0x430180
lea ecx, [esp + 0x28]
call fcn.004a8f10
lea ecx, [esp + 0x24]
push ecx
mov ecx, esi
mov byte [esp + 0x50], 0x11
call fcn.004b34a0
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x4c], 3
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x5cf644
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [edi + 0x70]
push ecx
lea edx, [esp + 0x18]
push 0x4301cc
push edx
call fcn.004aa600
add esp, 0xc
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
mov ecx, dword [edi + 0x74]
push ecx
lea edx, [esp + 0x18]
push 0x4301a0
push edx
call fcn.004aa600
add esp, 0xc
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
mov ecx, dword [edi + 0x78]
push ecx
lea edx, [esp + 0x18]
push 0x43015c
push edx
call fcn.004aa600
add esp, 0xc
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
mov ecx, dword [edi + 0x7c]
push ecx
lea edx, [esp + 0x18]
push 0x43013c
push edx
call fcn.004aa600
add esp, 0xc
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
mov ecx, dword [edi + 0x80]
push ecx
lea edx, [esp + 0x18]
push 0x43011c
push edx
call fcn.004aa600
add esp, 0xc
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
push 0x402a88
lea ecx, [esp + 0x28]
call fcn.004a8f10
mov byte [esp + 0x4c], 0x12
lea ecx, [esp + 0x24]
push ecx
mov ecx, esi
call fcn.004b34a0
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
or ecx, 0xffffffff
lea edx, [eax + 0xc]
mov byte [esp + 0x4c], 3
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x5cf735
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 0x4300f8
lea ecx, [esp + 0x28]
call fcn.004a8f10
lea ecx, [esp + 0x24]
push ecx
mov ecx, esi
mov byte [esp + 0x50], 0x13
call fcn.004b34a0
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x4c], 3
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x5cf779
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp]
push ecx
lea edx, [esp + 0x18]
push 0x4300e0
push edx
call fcn.004aa600
add esp, 0xc
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
mov ecx, dword [ebp + 4]
push ecx
lea edx, [esp + 0x18]
push 0x4300c8
push edx
call fcn.004aa600
add esp, 0xc
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
mov ecx, dword [ebp + 8]
push ecx
lea edx, [esp + 0x18]
push 0x4300ac
push edx
call fcn.004aa600
add esp, 0xc
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
movzx ecx, word [ebp + 0xc]
push ecx
lea edx, [esp + 0x18]
push 0x430090
push edx
call fcn.004aa600
add esp, 0xc
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
movzx ecx, word [ebp + 0xe]
push ecx
lea edx, [esp + 0x18]
push 0x430070
push edx
call fcn.004aa600
add esp, 0xc
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
mov ecx, dword [ebp + 0x10]
lea eax, [ebp + 0x10]
cmp ecx, 0x100
jae 0x5cf840
push ecx
push 0x43004c
lea ecx, [esp + 0x1c]
push ecx
jmp 0x5cf84b
push eax
push 0x430020
lea edx, [esp + 0x1c]
push edx
call fcn.004aa600
add esp, 0xc
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
mov ecx, dword [ebp + 0x14]
push ecx
lea edx, [esp + 0x18]
push 0x430000
push edx
call fcn.004aa600
add esp, 0xc
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
mov ecx, dword [ebp + 0x18]
push ecx
lea edx, [esp + 0x18]
push 0x42ffd8
push edx
call fcn.004aa600
add esp, 0xc
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
mov ecx, dword [ebp + 0x1c]
push ecx
lea edx, [esp + 0x18]
push 0x42ffb0
push edx
call fcn.004aa600
add esp, 0xc
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
mov ecx, dword [ebp + 0x20]
push ecx
lea edx, [esp + 0x18]
push 0x42ff94
push edx
call fcn.004aa600
add esp, 0xc
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
mov ecx, dword [ebp + 0x24]
push ecx
lea edx, [esp + 0x18]
push 0x42ff6c
push edx
call fcn.004aa600
add esp, 0xc
lea eax, [esp + 0x14]
push eax
mov ecx, esi
call fcn.004b34a0
push 0x402a88
lea ecx, [esp + 0x28]
call fcn.004a8f10
lea ecx, [esp + 0x24]
push ecx
mov ecx, esi
mov byte [esp + 0x50], 0x14
call fcn.004b34a0
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x4c], 3
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x5cf94d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [ebx + 0x40], 0
jbe 0x5cfefa
push 0x42ff58
lea ecx, [esp + 0x28]
call fcn.004a8f10
lea ecx, [esp + 0x24]
push ecx
mov ecx, esi
mov byte [esp + 0x50], 0x27
call fcn.004b34a0
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x4c], 3
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x5cf99b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebx + 0x40]
add eax, 0xf
and eax, 0xfffffff0
mov dword [esp + 0x20], 0
mov dword [esp + 0x40], eax
jle 0x5cfe6d
mov dword [esp + 0x18], 0x10
mov ebp, dword [esp + 0x20]
mov edi, dword [esp + 0x18]
push ebp
lea ecx, [esp + 0x18]
push 0x42ff4c
push ecx
call fcn.004aa600
mov eax, dword [ebx + 0x40]
add esp, 0xc
cmp edi, eax
jge 0x5cf9e8
mov eax, edi
mov dword [esp + 0x1c], edi
jmp 0x5cf9ec
mov dword [esp + 0x1c], eax
cmp ebp, eax
jge 0x5cfa8d
call fcn.007cff5d
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x5ce56d
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x54]
mov byte [esp + 0x4c], 0x28
test eax, eax
jle 0x5cfa2b
cmp eax, ebp
mov al, 0x7c
je 0x5cfa2d
mov al, 0x20
mov ecx, dword [ebx + 0x44]
movzx edx, byte [ecx + ebp]
push edx
movsx eax, al
push eax
lea ecx, [esp + 0x2c]
push 0x42ff3c
push ecx
call fcn.004aa600
mov edi, dword [esp + 0x34]
mov eax, dword [edi - 0xc]
add esp, 0x10
push eax
push edi
lea ecx, [esp + 0x1c]
call fcn.004a9f20
lea eax, [edi - 0x10]
mov byte [esp + 0x4c], 3
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x5cfa7e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
inc ebp
cmp ebp, dword [esp + 0x1c]
jl 0x5cf9f4
mov edi, dword [esp + 0x18]
mov eax, dword [ebx + 0x40]
cmp eax, edi
jge 0x5cfab3
sub edi, eax
jmp 0x5cfaa0
push 3
push 0x42df2c
lea ecx, [esp + 0x1c]
call fcn.004a9f20
dec edi
jne 0x5cfaa0
mov ecx, dword [esp + 0x14]
mov ebp, dword [ecx - 0xc]
lea edi, [ebp + 1]
test edi, edi
js 0x5cec06
mov eax, dword [ecx - 8]
mov edx, 1
sub edx, dword [ecx - 4]
sub eax, edi
or eax, edx
jge 0x5cfae4
push edi
lea ecx, [esp + 0x18]
call fcn.004a8a90
mov ecx, dword [esp + 0x14]
mov edx, 0x20
mov word [ecx + ebp*2], dx
cmp edi, dword [ecx - 8]
jg 0x5cec06
xor eax, eax
mov dword [ecx - 0xc], edi
mov word [ecx + edi*2], ax
mov ebx, dword [ebx + 0x40]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x24], ecx
cmp eax, ebx
jge 0x5cfb18
mov dword [esp + 0x2c], eax
jmp 0x5cfb1e
mov eax, ebx
mov dword [esp + 0x2c], ebx
cmp ecx, eax
jge 0x5cfd14
mov ecx, dword [esp + 0x30]
mov edx, dword [ecx + 0x44]
mov eax, dword [esp + 0x24]
mov bl, byte [eax + edx]
call fcn.007cff5d
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x5ce56d
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x28], eax
mov byte [esp + 0x4c], 0x29
movzx eax, bl
cmp bl, 0x20
jae 0x5cfb6a
mov eax, 0x2e
push eax
lea ecx, [esp + 0x2c]
push 0x42ff38
push ecx
call fcn.004e76b0
mov edx, dword [esp + 0x20]
mov ecx, dword [edx - 0x10]
add esp, 0xc
test ecx, ecx
je 0x5cfb93
mov eax, dword [ecx]
mov edx, dword [eax + 0x10]
call edx
test eax, eax
jne 0x5cfba1
call fcn.007cff5d
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x10]
call eax
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x5ce56d
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea edi, [eax + 0x10]
mov dword [esp + 0x1c], edi
mov ebx, dword [esp + 0x28]
mov byte [esp + 0x4c], 0x2a
test ebx, ebx
je 0x5cfc58
test ebx, 0xffff0000
jne 0x5cfbfe
movzx ebp, bx
push ebp
call fcn.007cfe78
test eax, eax
je 0x5cfcac
push ebp
push eax
lea ecx, [esp + 0x24]
call fcn.004a8d10
mov edi, dword [esp + 0x1c]
jmp 0x5cfcac
push 0
push 0
push 0xffffffffffffffff
push ebx
push 0
push 3
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
lea ebp, [eax - 1]
test ebp, ebp
jle 0x5cfc58
mov eax, dword [edi - 8]
mov ecx, 1
sub ecx, dword [edi - 4]
sub eax, ebp
or eax, ecx
jge 0x5cfc35
push ebp
lea ecx, [esp + 0x20]
call fcn.004a8a90
mov edi, dword [esp + 0x1c]
push ebp
push edi
push 0xffffffffffffffff
push ebx
push 0
push 3
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
cmp ebp, dword [edi - 8]
jg 0x5cec06
xor ecx, ecx
mov dword [edi - 0xc], ebp
mov word [edi + ebp*2], cx
jmp 0x5cfcac
cmp dword [edi - 0xc], 0
mov ebp, dword [edi - 0x10]
lea eax, [edi - 0x10]
je 0x5cfcac
cmp dword [eax + 0xc], 0
lea ecx, [eax + 0xc]
jge 0x5cfc85
cmp dword [edi - 8], 0
jl 0x5cec06
xor edx, edx
mov dword [edi - 0xc], 0
mov word [edi], dx
jmp 0x5cfcac
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5cfc9b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edx, dword [ebp]
mov eax, dword [edx + 0xc]
mov ecx, ebp
call eax
lea edi, [eax + 0x10]
mov dword [esp + 0x1c], edi
mov eax, dword [edi - 0xc]
push eax
push edi
lea ecx, [esp + 0x1c]
mov byte [esp + 0x54], 0x2b
call fcn.004a9f20
lea eax, [edi - 0x10]
mov byte [esp + 0x4c], 0x29
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5cfce0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [ebx - 0x10]
mov byte [esp + 0x4c], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5cfd01
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x24]
inc eax
mov dword [esp + 0x24], eax
cmp eax, dword [esp + 0x2c]
jl 0x5cfb26
cmp dword [esi + 0x10], 0
mov ecx, dword [esi + 4]
mov dword [esp + 0x28], ecx
jne 0x5cfd94
mov eax, dword [esi + 0x14]
xor ecx, ecx
mov edx, eax
mov edi, ecx
shld ecx, eax, 1
add eax, eax
add eax, edx
adc ecx, edi
shld ecx, eax, 2
add eax, eax
add eax, eax
test ecx, ecx
ja 0x5cfe63
jb 0x5cfd4f
cmp eax, 0xffffffff
ja 0x5cfe63
or ecx, 0xffffffff
sub ecx, eax
cmp ecx, 4
jb 0x5cfe63
add eax, 4
push eax
call fcn.00802fbf
add esp, 4
test eax, eax
je 0x5cfe63
mov edx, dword [esi + 0xc]
mov dword [eax], edx
mov dword [esi + 0xc], eax
mov ecx, dword [esi + 0x14]
lea edx, [ecx + ecx*2]
dec ecx
lea eax, [eax + edx*4 - 8]
js 0x5cfd94
mov edx, dword [esi + 0x10]
mov dword [eax], edx
mov dword [esi + 0x10], eax
sub eax, 0xc
dec ecx
jns 0x5cfd86
mov ebp, dword [esi + 0x10]
mov eax, dword [ebp]
mov dword [esp + 0x24], ebp
mov dword [esp + 0x2c], eax
mov dword [esp + 0x1c], ebp
mov byte [esp + 0x4c], 0x2c
test ebp, ebp
je 0x5cfe17
mov edi, dword [esp + 0x14]
mov ecx, dword [edi - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
call eax
cmp dword [edi - 4], 0
lea ecx, [edi - 4]
jl 0x5cfdd9
cmp eax, dword [edi - 0x10]
jne 0x5cfdd9
lea ebx, [edi - 0x10]
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x5cfe11
mov ecx, dword [edi - 0xc]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov ebx, eax
test ebx, ebx
je 0x5cece2
mov eax, dword [edi - 0xc]
mov dword [ebx + 4], eax
mov eax, dword [edi - 0xc]
lea ecx, [eax + eax + 2]
push ecx
lea edx, [eax + eax + 2]
push edi
push edx
lea eax, [ebx + 0x10]
push eax
call fcn.0080217f
add esp, 0x10
add ebx, 0x10
mov dword [ebp + 8], ebx
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x28]
mov dword [esi + 0x10], ecx
mov dword [ebp + 4], edx
mov dword [ebp], 0
mov eax, dword [esi + 4]
inc dword [esi + 8]
mov byte [esp + 0x4c], 3
test eax, eax
je 0x5cfe3f
mov dword [eax], ebp
jmp 0x5cfe41
mov dword [esi], ebp
mov eax, dword [esp + 0x20]
add dword [esp + 0x18], 0x10
add eax, 0x10
mov dword [esi + 4], ebp
mov dword [esp + 0x20], eax
cmp eax, dword [esp + 0x40]
jge 0x5cfe6d
mov ebx, dword [esp + 0x30]
jmp 0x5cf9be
push 0x8007000e
call fcn.004a8210
push 0x402a88
lea ecx, [esp + 0x58]
call fcn.004a8f10
mov ebx, dword [esi + 4]
mov ecx, esi
mov byte [esp + 0x4c], 0x2d
call fcn.005dfd30
mov edi, dword [esi + 0x10]
mov ebp, dword [edi]
mov dword [esp + 0x40], edi
mov dword [esp + 0x30], edi
mov byte [esp + 0x4c], 0x2e
test edi, edi
je 0x5cfeb6
mov eax, dword [esp + 0x54]
add eax, 0xfffffff0
push eax
call fcn.004a9b50
add esp, 4
add eax, 0x10
mov dword [edi + 8], eax
mov dword [esi + 0x10], ebp
mov dword [edi + 4], ebx
mov dword [edi], 0
mov eax, dword [esi + 4]
inc dword [esi + 8]
test eax, eax
je 0x5cfed0
mov dword [eax], edi
jmp 0x5cfed2
mov dword [esi], edi
mov eax, dword [esp + 0x54]
add eax, 0xfffffff0
mov dword [esi + 4], edi
mov byte [esp + 0x4c], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5cfefa
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x34]
add eax, 0xfffffff0
mov byte [esp + 0x4c], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5cff1f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x38]
add eax, 0xfffffff0
mov byte [esp + 0x4c], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5cff44
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x3c]
add eax, 0xfffffff0
mov byte [esp + 0x4c], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5cff69
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
mov dword [esp + 0x4c], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5cff91
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x44]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret 4