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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
push 0xffffffffffffffff
push 0x7954d8
mov eax, dword fs:[0]
push eax
sub esp, 0xe8
push ebx
push esi
push edi
mov eax, dword [0x867e6c]
xor eax, esp
push eax
lea eax, [esp + 0xf8]
mov dword fs:[0], eax
mov ebx, ecx
mov dword [esp + 0x20], ebx
push 0x88c5a8
mov dword [esp + 0xc4], 0x88c5a8
call dword [sym.imp.ntdll.dll_RtlEnterCriticalSection]
mov esi, dword [ebp + 0x20]
xor edx, edx
xor eax, eax
mov dword [esp + 0x100], edx
mov ecx, 0x100
mov edi, 0x8862d8
rep stosd dword es:[edi], eax
mov ecx, 0x100
mov edi, 0x8866d8
rep stosd dword es:[edi], eax
cmp esi, edx
je 0x587c42
mov ecx, dword [esi + 0x14]
mov eax, dword [ecx]
mov dword [ecx], ecx
mov ecx, dword [esi + 0x14]
mov dword [ecx + 4], ecx
mov dword [esi + 0x18], edx
cmp eax, dword [esi + 0x14]
je 0x587c42
lea ecx, [ecx]
mov edi, dword [eax]
push eax
call fcn.006441c7
add esp, 4
mov eax, edi
cmp edi, dword [esi + 0x14]
jne 0x587c30
mov eax, dword [ebx + 0x14]
cmp byte [eax + 0x88], 0
jne 0x587c64
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x588990
mov dword [eax], 0
jmp 0x588990
mov edx, dword [ebx]
mov eax, dword [edx + 0x58]
mov ecx, ebx
call eax
mov edx, dword [ebp + 8]
mov eax, edx
call fcn.00430cd0
mov byte [esp + 0x2b], al
mov cl, 1
mov eax, edx
call fcn.00430cc0
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0x14]
mov dword [esp + 0x30], ecx
xor ecx, ecx
mov dword [esp + 0x40], ecx
mov dword [esp + 0x4c], ecx
cmp eax, ecx
jbe 0x588636
mov edi, dword [esp + 0x4c]
cmp edi, eax
jbe 0x587cb0
call fcn.006441b7
mov ebx, dword [ebp + 0x14]
cmp dword [ebx + 0x18], 8
lea eax, [ebx + 4]
mov dword [esp + 0x1c], eax
jb 0x587cc2
mov eax, dword [eax]
movzx eax, word [eax + edi*2]
mov esi, dword [esp + 0x20]
push eax
mov eax, esi
call fcn.00587470
movzx ecx, ax
mov eax, dword [ebx + 0x14]
lea edx, [eax - 1]
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x34], 0
cmp edi, edx
jae 0x587d14
inc edi
cmp edi, eax
jbe 0x587cf5
call fcn.006441b7
cmp dword [ebx + 0x18], 8
mov eax, dword [esp + 0x1c]
jb 0x587d01
mov eax, dword [eax]
movzx ecx, word [eax + edi*2]
push ecx
mov eax, esi
call fcn.00587470
movzx edx, ax
mov dword [esp + 0x34], edx
mov eax, dword [esp + 0x30]
mov ecx, dword [esi + 0x4c]
mov ebx, dword [ecx]
mov edi, dword [esi + 0x38]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x40]
imul eax, eax, 0x34
add eax, 0x88c5c0
mov dword [esp + 0x68], ebx
mov dword [esp + 0x64], edi
mov dword [esp + 0x48], eax
lea esp, [esp]
mov edx, dword [esi + 0x4c]
mov esi, dword [esi + 0x38]
mov dword [esp + 0xa8], edx
test edi, edi
je 0x587d55
cmp edi, esi
je 0x587d5a
call fcn.006441b7
cmp ebx, dword [esp + 0xa8]
je 0x588617
test edi, edi
jne 0x587e91
call fcn.006441b7
cmp ebx, dword [edi + 0x14]
jne 0x587d7e
call fcn.006441b7
mov eax, dword [esp + 0x2c]
mov ecx, dword [ebx + 0xc]
lea edi, [ebx + 8]
call fcn.00581d70
mov ebx, dword [edi + 4]
mov ecx, dword [esp + 0x20]
fld qword [ecx + 0x58]
mov esi, eax
mov eax, dword [ebx + 0x120]
fst qword [esp + 0x94]
mov dword [esp + 0x60], esi
mov dword [esp + 0x24], eax
test eax, eax
je 0x587dc4
mov edx, ecx
fild dword [edx + 0x18]
fidiv dword [esp + 0x24]
fmulp st(1)
fst qword [esp + 0x94]
fld qword [0x7a8008]
fucomp st(1)
fnstsw ax
test ah, 0x44
jp 0x587ea5
mov ecx, ebx
fstp st(0)
mov eax, dword [ecx + 0x10c]
add eax, dword [esi + 0x10]
add eax, dword [esp + 0x30]
mov dword [esp + 0x44], eax
mov eax, dword [ecx + 0x110]
sub eax, dword [ecx + 0x124]
add eax, dword [esi + 0x14]
add eax, dword [ebp + 0x10]
cmp word [esp + 0x34], 0
mov dword [esp + 0x3c], eax
mov eax, dword [esi + 0x1c]
mov dword [esp + 0x24], eax
je 0x587e98
movzx eax, word [esi + 0x1a]
mov ecx, dword [ebx + 0x114]
mov dword [esp + 0x1c], ecx
test ax, ax
je 0x587fb9
mov ecx, dword [ebx + 0x80]
sub ecx, dword [ebx + 0x7c]
movzx edx, ax
movzx eax, word [esi + 0x18]
sar ecx, 2
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], eax
cmp eax, ecx
jb 0x587e54
call fcn.006441b7
mov eax, dword [esp + 0x14]
cmp dword [esp + 0x18], 0
mov edx, dword [ebx + 0x7c]
lea eax, [edx + eax*4]
jle 0x587fb9
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
lea ecx, [ecx]
mov bx, word [eax]
cmp bx, word [esp + 0x34]
jne 0x587e80
movsx ebx, word [eax + 2]
add edx, ebx
add eax, 4
sub ecx, 1
jne 0x587e70
mov dword [esp + 0x1c], edx
jmp 0x587fb9
mov edi, dword [edi]
jmp 0x587d74
mov dword [esp + 0x1c], 0
jmp 0x587fb9
mov eax, dword [ebx + 0x10c]
add eax, dword [esi + 0x10]
sub esp, 8
mov dword [esp + 0x1c], eax
fild dword [esp + 0x1c]
fmulp st(1)
fstp qword [esp]
call fcn.0076fcb0
call fcn.0076f850
add eax, dword [esp + 0x38]
mov dword [esp + 0x4c], eax
mov eax, ebx
mov ecx, dword [eax + 0x124]
sub ecx, dword [eax + 0x110]
sub ecx, dword [esi + 0x14]
mov dword [esp + 0x1c], ecx
fild dword [esp + 0x1c]
fmul qword [esp + 0x9c]
fstp qword [esp]
call fcn.0076fcb0
add esp, 8
call fcn.0076f850
fild dword [esi + 0x1c]
fld qword [esp + 0x94]
mov ecx, dword [ebp + 0x10]
sub ecx, eax
fmul st(1), st(0)
mov dword [esp + 0x3c], ecx
fxch st(1)
call fcn.0076f850
cmp word [esp + 0x34], 0
mov dword [esp + 0x24], eax
je 0x587faf
movzx eax, word [esi + 0x1a]
mov edx, dword [ebx + 0x114]
mov dword [esp + 0x1c], edx
test ax, ax
je 0x587fb7
mov edx, dword [ebx + 0x80]
sub edx, dword [ebx + 0x7c]
movzx ecx, ax
movzx eax, word [esi + 0x18]
sar edx, 2
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], eax
cmp eax, edx
jb 0x587f74
fstp st(0)
call fcn.006441b7
fld qword [esp + 0x94]
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, dword [ebx + 0x7c]
lea ebx, [edx + eax*4]
test ecx, ecx
jle 0x587fb7
mov dword [esp + 0x18], ecx
mov ax, word [ebx]
cmp ax, word [esp + 0x34]
jne 0x587fa3
movsx ecx, word [ebx + 2]
mov dword [esp + 0x14], ecx
fild dword [esp + 0x14]
fmul st(1)
call fcn.0076f850
add dword [esp + 0x1c], eax
add ebx, 4
sub dword [esp + 0x18], 1
jne 0x587f82
jmp 0x587fb7
mov dword [esp + 0x1c], 0
fstp st(0)
lea ecx, [esp + 0x50]
call fcn.00434800
mov edx, dword [edi + 0x9c]
sub edx, dword [edi + 0x98]
lea eax, [edi + 0x8c]
test edx, 0xfffffff0
jne 0x588180
mov ebx, dword [edi + 4]
mov eax, dword [ebp + 0x18]
mov eax, dword [eax]
mov ecx, dword [ebx + 0xbc]
imul ecx, eax
mov dword [esp + 0x14], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
add ecx, dword [ebx + 0xcc]
cmp ecx, 0xff
jge 0x588040
mov ecx, dword [ebx + 0xbc]
imul ecx, dword [esp + 0x14]
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
add eax, dword [ebx + 0xcc]
mov dword [esp + 0x50], eax
jmp 0x588048
mov dword [esp + 0x50], 0xff
mov ebx, dword [edi + 4]
mov edx, dword [ebp + 0x18]
mov eax, dword [edx + 4]
mov ecx, dword [ebx + 0xc0]
imul ecx, eax
mov dword [esp + 0x14], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
add eax, dword [ebx + 0xd0]
cmp eax, 0xff
jge 0x5880a8
mov ecx, dword [ebx + 0xc0]
imul ecx, dword [esp + 0x14]
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
add eax, dword [ebx + 0xd0]
mov dword [esp + 0x54], eax
jmp 0x5880b0
mov dword [esp + 0x54], 0xff
mov ecx, dword [ebp + 0x18]
mov eax, dword [ecx + 8]
mov ebx, dword [edi + 4]
mov ecx, dword [ebx + 0xc4]
imul ecx, eax
mov dword [esp + 0x18], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
add eax, dword [ebx + 0xd4]
cmp eax, 0xff
jge 0x588111
mov eax, ebx
mov ecx, dword [eax + 0xc4]
imul ecx, dword [esp + 0x18]
mov eax, 0x80808081
imul ecx
mov eax, dword [edi + 4]
add edx, ecx
sar edx, 7
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
add ebx, dword [eax + 0xd4]
jmp 0x588116
mov ebx, 0xff
mov ecx, dword [ebp + 0x18]
mov edx, dword [ecx + 0xc]
mov eax, dword [edi + 4]
mov ecx, dword [eax + 0xc8]
imul ecx, edx
mov dword [esp + 0x14], edx
mov eax, 0x80808081
imul ecx
mov eax, dword [edi + 4]
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
add ecx, dword [eax + 0xd8]
cmp ecx, 0xff
jge 0x588463
mov ecx, dword [eax + 0xc8]
imul ecx, dword [esp + 0x14]
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [edi + 4]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
add eax, dword [ecx + 0xd8]
jmp 0x588468
call fcn.005baf50
mov edx, dword [eax + 4]
mov ebx, dword [eax]
mov ecx, dword [eax + 8]
mov esi, dword [edi + 4]
mov dword [esp + 0x78], edx
mov edx, dword [eax + 0xc]
mov eax, dword [ebp + 0x18]
mov eax, dword [eax]
mov dword [esp + 0x7c], ecx
mov ecx, dword [esi + 0xbc]
imul ecx, eax
imul ecx, ebx
mov dword [esp + 0x80], edx
mov eax, 0x81018203
imul ecx
add edx, ecx
mov ecx, dword [esi + 0xcc]
sar edx, 0xf
imul ecx, ebx
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x14], eax
mov eax, 0x80808081
imul ecx
mov eax, dword [esp + 0x14]
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add eax, edx
add ecx, eax
cmp ecx, 0xff
jge 0x588242
mov edx, dword [ebp + 0x18]
mov ecx, dword [esi + 0xbc]
imul ecx, dword [edx]
imul ecx, ebx
mov eax, 0x81018203
imul ecx
add edx, ecx
mov ecx, dword [esi + 0xcc]
sar edx, 0xf
imul ecx, ebx
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x14], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [esp + 0x14]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add ecx, edx
add eax, ecx
mov dword [esp + 0x50], eax
jmp 0x58824a
mov dword [esp + 0x50], 0xff
mov esi, dword [edi + 4]
mov eax, dword [ebp + 0x18]
mov eax, dword [eax + 4]
mov ecx, dword [esi + 0xc0]
mov ebx, dword [esp + 0x78]
imul ecx, eax
imul ecx, ebx
mov eax, 0x81018203
imul ecx
add edx, ecx
mov ecx, dword [esi + 0xd0]
sar edx, 0xf
imul ecx, ebx
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x14], eax
mov eax, 0x80808081
imul ecx
mov eax, dword [esp + 0x14]
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add eax, edx
add ecx, eax
cmp ecx, 0xff
jge 0x5882f3
mov edx, dword [ebp + 0x18]
mov ecx, dword [esi + 0xc0]
imul ecx, dword [edx + 4]
imul ecx, ebx
mov eax, 0x81018203
imul ecx
add edx, ecx
mov ecx, dword [esi + 0xd0]
sar edx, 0xf
imul ecx, ebx
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x14], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [esp + 0x14]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add ecx, edx
add eax, ecx
mov dword [esp + 0x54], eax
jmp 0x5882fb
mov dword [esp + 0x54], 0xff
mov ebx, dword [edi + 4]
mov eax, dword [ebp + 0x18]
mov eax, dword [eax + 8]
mov ecx, dword [ebx + 0xc4]
mov esi, dword [esp + 0x7c]
imul ecx, eax
imul ecx, esi
mov dword [esp + 0x18], eax
mov eax, 0x81018203
imul ecx
add edx, ecx
mov ecx, dword [ebx + 0xd4]
sar edx, 0xf
imul ecx, esi
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x14], eax
mov eax, 0x80808081
imul ecx
mov eax, dword [esp + 0x14]
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add eax, edx
add ecx, eax
cmp ecx, 0xff
jge 0x5883a2
mov ecx, dword [ebx + 0xc4]
imul ecx, dword [esp + 0x18]
imul ecx, esi
mov eax, 0x81018203
imul ecx
add edx, ecx
mov ecx, dword [ebx + 0xd4]
sar edx, 0xf
imul ecx, esi
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x14], eax
mov eax, 0x80808081
imul ecx
mov eax, dword [esp + 0x14]
add edx, ecx
sar edx, 7
mov ebx, edx
shr ebx, 0x1f
add eax, edx
add ebx, eax
jmp 0x5883a7
mov ebx, 0xff
mov eax, dword [edi + 4]
mov ecx, dword [eax + 0xc8]
mov edx, dword [ebp + 0x18]
mov edx, dword [edx + 0xc]
mov esi, dword [esp + 0x80]
imul ecx, edx
imul ecx, esi
mov eax, 0x81018203
imul ecx
add edx, ecx
sar edx, 0xf
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x18], eax
mov eax, dword [edi + 4]
mov ecx, dword [eax + 0xd8]
imul ecx, esi
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x18]
mov eax, edx
shr eax, 0x1f
add ecx, edx
add eax, ecx
cmp eax, 0xff
jge 0x58845f
mov eax, dword [edi + 4]
mov ecx, dword [eax + 0xc8]
mov edx, dword [ebp + 0x18]
imul ecx, dword [edx + 0xc]
imul ecx, esi
mov eax, 0x81018203
imul ecx
add edx, ecx
sar edx, 0xf
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x14], eax
mov eax, dword [edi + 4]
mov ecx, dword [eax + 0xd8]
imul ecx, esi
mov esi, dword [esp + 0x60]
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [esp + 0x14]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add ecx, edx
add eax, ecx
jmp 0x588468
mov esi, dword [esp + 0x60]
mov eax, 0xff
mov ecx, dword [edi + 4]
mov ecx, dword [ecx + 0x138]
add ecx, dword [esi + 0x20]
cmp dword [esp + 0x48], 0x8c05c0
mov dword [esp + 0x14], ecx
jge 0x588617
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x50]
inc dword [esp + 0x40]
mov esi, ecx
add ecx, 0x34
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x54]
mov dword [esi + 0x20], edx
mov edx, dword [esp + 0x44]
mov dword [esi + 0x24], ecx
mov dword [esi + 0x28], ebx
mov dword [esi + 0x2c], eax
mov eax, dword [esp + 0x3c]
lea ecx, [esp + 0x2c]
mov dword [esi + 8], eax
lea ebx, [edi + 0x6c]
push ecx
mov eax, ebx
mov dword [esi], edi
mov dword [esi + 4], edx
call fcn.0058ad70
mov edx, dword [eax]
lea eax, [esp + 0x2c]
push eax
mov eax, ebx
mov dword [esi + 0xc], edx
call fcn.0058ad70
mov ecx, dword [eax + 4]
lea edx, [esp + 0x2c]
push edx
mov eax, ebx
mov dword [esi + 0x10], ecx
call fcn.0058ad70
mov eax, dword [eax + 8]
lea ecx, [esp + 0x2c]
mov dword [esi + 0x14], eax
push ecx
mov eax, ebx
call fcn.0058ad70
mov edx, dword [eax + 0xc]
mov dword [esi + 0x18], edx
mov eax, dword [edi + 4]
mov ecx, dword [eax + 0x108]
mov eax, dword [esp + 0x14]
sub eax, 0xffffff80
mov dword [esi + 0x1c], ecx
mov dword [esi + 0x30], 0
test eax, eax
jle 0x58852a
cmp eax, 0xff
jge 0x588536
xor ecx, ecx
test eax, eax
setle cl
dec ecx
and ecx, eax
jmp 0x58853b
mov ecx, 0xff
mov edx, dword [ecx*4 + 0x8862d8]
lea eax, [ecx*4 + 0x8862d8]
test edx, edx
jne 0x588556
mov dword [ecx*4 + 0x8866d8], esi
jmp 0x588559
mov dword [edx + 0x30], esi
mov edi, dword [ebp + 0x20]
mov dword [eax], esi
test edi, edi
je 0x5885c9
lea edx, [esp + 0x2c]
push edx
mov eax, ebx
call fcn.0058ad70
mov esi, dword [eax + 0xc]
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x3c]
lea edx, [esp + 0x2c]
mov dword [esp + 0x84], eax
push edx
mov eax, ebx
mov dword [esp + 0x8c], ecx
call fcn.0058ad70
mov ebx, dword [edi + 0x14]
mov ecx, dword [ebx + 4]
mov eax, dword [eax + 8]
push ecx
mov dword [esp + 0x94], esi
push ebx
lea esi, [esp + 0x8c]
mov dword [esp + 0x94], eax
call fcn.0058cd10
mov ecx, edi
mov esi, eax
call fcn.0058cd60
mov dword [ebx + 4], esi
mov edx, dword [esi + 4]
mov dword [edx], esi
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x24]
add eax, ecx
add eax, dword [esp + 0x30]
cmp eax, dword [esp + 0x38]
jle 0x5885e1
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x64]
test eax, eax
jne 0x588613
call fcn.006441b7
xor eax, eax
mov esi, dword [esp + 0x68]
cmp esi, dword [eax + 0x14]
jne 0x5885fe
call fcn.006441b7
mov edx, dword [esi]
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x64]
mov dword [esp + 0x68], edx
mov ebx, edx
jmp 0x587d40
mov eax, dword [eax]
jmp 0x5885f0
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x4c]
mov edx, dword [ebp + 0x14]
mov dword [esp + 0x30], eax
mov eax, dword [edx + 0x14]
inc ecx
mov dword [esp + 0x4c], ecx
cmp ecx, eax
jb 0x587ca3
mov ecx, dword [ebp + 0x24]
test ecx, ecx
je 0x588646
mov eax, dword [esp + 0x30]
sub eax, dword [ebp + 0xc]
mov dword [ecx], eax
mov ebx, dword [ebp + 8]
mov eax, ebx
call fcn.00430c50
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov dword [esp + 0xb0], ecx
mov ecx, dword [eax + 8]
mov dword [esp + 0xb4], edx
mov edx, dword [eax + 0xc]
mov eax, 0x8866d8
mov dword [esp + 0xb8], ecx
mov dword [esp + 0xbc], edx
mov dword [esp + 0x24], eax
mov edi, dword [eax]
mov dword [esp + 0x20], edi
test edi, edi
je 0x588965
mov edi, edi
cmp dword [edi], 0
je 0x588952
mov eax, ebx
call fcn.00430cb0
mov ecx, dword [edi + 0x1c]
mov dword [esp + 0x14], eax
cmp ecx, 0xffffffff
je 0x5886b3
mov eax, ebx
call fcn.00430ca0
mov eax, dword [edi + 0x20]
mov ecx, dword [edi + 0x24]
mov edx, dword [edi + 0x28]
mov dword [esp + 0x84], eax
mov eax, dword [edi + 0x2c]
mov dword [esp + 0x88], ecx
mov dword [esp + 0x90], eax
lea eax, [esp + 0x84]
mov ecx, ebx
mov dword [esp + 0x8c], edx
call fcn.00430c20
mov esi, dword [edi + 0x28]
mov ecx, dword [edi + 0x24]
imul esi, esi, 0x1c28
mov edx, dword [edi + 0x20]
imul ecx, ecx, 0x970a
imul edx, edx, 0x4ccc
add esi, ecx
add esi, edx
mov edx, dword [edi]
sar esi, 0x15
cmp byte [edx + 0x68], 0
je 0x588905
mov eax, dword [edx + 4]
cmp byte [eax + 0x13c], 0
je 0x588905
cmp byte [0x88b5b9], 0
je 0x588905
cmp esi, 7
je 0x588905
lea ecx, [edx + 8]
call fcn.00466470
mov edi, dword [ebp + 8]
cmp byte [edi + 0x74], 0
mov ebx, eax
je 0x5887e3
lea ecx, [esi + esi*2]
lea ecx, [edx + ecx*4 + 8]
call fcn.00466470
mov ebx, eax
test ebx, ebx
je 0x588780
mov eax, dword [ebx + 0x4c]
test eax, eax
je 0x588780
mov eax, dword [eax + 0x3f8]
mov ecx, esi
shl ecx, 0xa
cmp eax, dword [ecx + 0x86d788]
je 0x5887a4
push esi
lea ecx, [esp + 0xa8]
push ecx
push edx
call fcn.00587870
mov ecx, eax
call fcn.00466470
lea ecx, [esp + 0xa4]
mov ebx, eax
call fcn.004663a0
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 0xc]
mov ecx, dword [eax + 0x10]
mov dword [esp + 0x74], edx
mov edx, dword [eax + 0x14]
mov dword [esp + 0x7c], edx
mov edx, dword [eax + 8]
mov dword [esp + 0x78], ecx
mov ecx, dword [eax + 0x18]
mov eax, dword [eax + 4]
push edx
push eax
push ebx
lea eax, [esp + 0x80]
mov esi, edi
mov dword [esp + 0x8c], ecx
call fcn.00431840
jmp 0x588940
test ebx, ebx
je 0x5887ed
cmp dword [ebx + 0x4c], 0
jne 0x588812
push 0
lea ecx, [esp + 0x98]
push ecx
push edx
call fcn.00587870
mov ecx, eax
call fcn.00466470
lea ecx, [esp + 0x94]
mov ebx, eax
call fcn.004663a0
mov edi, dword [ebx + 0x4c]
mov eax, dword [edi + 0x3f8]
mov edx, esi
shl edx, 0xa
cmp eax, dword [edx + 0x86d788]
je 0x5888cc
lea esi, [edx + 0x86d390]
mov ecx, 0x100
rep movsd dword es:[edi], dword [esi]
cmp dword [ebx + 0x5c], 0
je 0x5888cc
xor eax, eax
lea ecx, [edx + 0x86d394]
jmp 0x588850
movzx edx, byte [ecx - 1]
mov esi, edx
shl esi, 8
or esi, edx
shl esi, 8
or esi, edx
shl esi, 8
or esi, edx
mov edx, dword [ebx + 0x5c]
mov dword [eax + edx], esi
movzx edx, byte [ecx + 3]
mov esi, edx
shl esi, 8
or esi, edx
shl esi, 8
or esi, edx
shl esi, 8
or esi, edx
mov edx, dword [ebx + 0x5c]
mov dword [eax + edx + 4], esi
movzx edx, byte [ecx + 7]
mov esi, edx
shl esi, 8
or esi, edx
shl esi, 8
or esi, edx
shl esi, 8
or esi, edx
mov edx, dword [ebx + 0x5c]
mov dword [eax + edx + 8], esi
movzx edx, byte [ecx + 0xb]
mov esi, edx
shl esi, 8
or esi, edx
shl esi, 8
or esi, edx
shl esi, 8
or esi, edx
mov edx, dword [ebx + 0x5c]
mov dword [eax + edx + 0xc], esi
add eax, 0x10
add ecx, 0x10
cmp eax, 0x400
jl 0x588850
mov eax, dword [esp + 0x20]
mov ecx, dword [eax + 0xc]
mov edx, dword [eax + 0x10]
mov edi, dword [ebp + 8]
mov dword [esp + 0x50], ecx
mov ecx, dword [eax + 0x14]
mov dword [esp + 0x54], edx
mov edx, dword [eax + 0x18]
mov dword [esp + 0x58], ecx
mov ecx, dword [eax + 8]
mov dword [esp + 0x5c], edx
mov edx, dword [eax + 4]
push ecx
push edx
push ebx
lea eax, [esp + 0x5c]
mov esi, edi
call fcn.00431840
jmp 0x588940
mov eax, dword [edi + 0xc]
mov ecx, dword [edi + 0x10]
mov dword [esp + 0x64], eax
mov eax, dword [edi + 0x14]
mov dword [esp + 0x68], ecx
mov ecx, dword [edi + 0x18]
mov dword [esp + 0x6c], eax
mov eax, dword [edi + 8]
mov dword [esp + 0x70], ecx
mov ecx, dword [edi + 4]
push eax
push ecx
lea ecx, [edx + 0x5c]
call fcn.00466460
push eax
lea eax, [esp + 0x70]
mov esi, ebx
call fcn.00431840
mov edi, dword [ebp + 8]
mov ecx, dword [esp + 0x14]
mov eax, edi
call fcn.00430ca0
mov edi, dword [esp + 0x20]
mov ebx, dword [ebp + 8]
mov edi, dword [edi + 0x30]
mov dword [esp + 0x20], edi
test edi, edi
jne 0x588690
mov eax, dword [esp + 0x24]
add eax, 4
cmp eax, 0x886ad8
mov dword [esp + 0x24], eax
jl 0x588680
lea eax, [esp + 0xb0]
mov ecx, ebx
call fcn.00430c20
mov cl, byte [esp + 0x2b]
mov eax, ebx
call fcn.00430cc0
push 0x88c5a8
call dword [sym.imp.ntdll.dll_RtlLeaveCriticalSection]
mov ecx, dword [esp + 0xf8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20