Function at 0x5ca708
Capabilities:
Get keyboard layout
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x2f0
call 0x5ca71c
pop eax
mov esi, ecx
mov dword [esp + 0xc0], eax
push 0
call dword [sym.imp.user32.dll_GetKeyboardLayout]
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 0x14]
mov edi, dword [esi + 0x18]
mov ebx, dword [esi + 0x1c]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x70], edx
push eax
mov dword [esp + 0xc], ebx
push ebx
mov dword [esp + 0x58], edi
push edi
call fcn.005f93a0
add esp, 0xc
mov edi, eax
mov edx, dword [esi + 4]
mov ebx, dword [esi]
pcmpeqd xmm1, xmm1
mov dword [esp + 0x20], esi
mov dword [esp + 0xd0], eax
mov dword [esp + 0x30], 0
shr edi, 0x19
movd xmm0, edi
mov dword [esp + 0xd4], edi
punpcklbw xmm0, xmm0
mov ecx, edx
pshuflw xmm0, xmm0, 0
lea edi, [ebx - 0x70]
mov dword [esp + 4], ebx
and ecx, eax
pshufd xmm0, xmm0, 0
movdqu xmm2, xmmword [ebx + ecx]
movdqa xmm3, xmm2
pcmpeqb xmm3, xmm0
pmovmskb ebx, xmm3
test bx, bx
je 0x5ca7d6
lea esi, [ebx - 1]
bsf eax, ebx
add eax, ecx
and esi, ebx
mov ebx, dword [esp + 0x14]
and eax, edx
neg eax
imul eax, eax, 0x70
cmp dword [edi + eax], ebx
mov ebx, esi
jne 0x5ca7b3
jmp 0x5ca7f9
pcmpeqb xmm2, xmm1
pmovmskb eax, xmm2
test eax, eax
jne 0x5ca80e
mov eax, dword [esp + 0x30]
mov ebx, dword [esp + 4]
lea ecx, [ecx + eax + 0x10]
add eax, 0x10
mov dword [esp + 0x30], eax
and ecx, edx
jmp 0x5ca7a2
mov edx, dword [esp + 4]
add edx, eax
mov eax, dword [esp + 0x1c]
add edx, 0xffffff98
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [esp + 0x20]
cmp dword [eax + 8], 0
je 0x5cb9aa
call fcn.005c1420
test eax, eax
je 0x5cba5c
mov ebx, dword [eax]
mov edi, dword [eax + 0xc]
mov ecx, dword [eax + 8]
mov esi, ebx
mov dword [esp + 0x18], ecx
add esi, 1
mov dword [eax], esi
mov esi, dword [eax + 4]
mov edx, esi
adc edx, 0
mov dword [eax + 4], edx
call fcn.005c1420
test eax, eax
je 0x5cba5c
mov edx, dword [eax + 0xc]
mov ecx, dword [eax]
mov dword [esp + 0xc], ebx
mov dword [esp + 8], edi
mov dword [esp + 0x30], edx
mov edx, dword [eax + 8]
mov dword [esp + 0x50], ecx
add ecx, 1
mov dword [eax], ecx
mov dword [esp + 4], edx
mov edx, dword [eax + 4]
mov dword [esp + 0x70], edx
adc edx, 0
mov dword [eax + 4], edx
call fcn.005c1420
test eax, eax
je 0x5cba5c
mov ecx, dword [eax]
mov edx, dword [eax + 0xc]
movq xmm0, qword [0x7f5250]
movq xmm1, qword [0x7f5258]
mov edi, ecx
mov dword [esp + 0x10], edx
mov edx, dword [eax + 8]
add edi, 1
mov dword [eax], edi
mov edi, dword [eax + 4]
mov ebx, edi
adc ebx, 0
mov dword [eax + 4], ebx
mov eax, dword [esp + 0x1c]
lea ebx, [esp + 0x108]
mov dword [ebx + 0x40], eax
mov eax, dword [esp + 0xc]
movq qword [ebx - 0x20], xmm0
movq qword [ebx - 0x18], xmm1
mov dword [ebx - 0xc], esi
mov esi, dword [esp + 0x50]
mov dword [ebx - 0x10], eax
mov eax, dword [esp + 0x18]
mov dword [ebx - 8], eax
mov eax, dword [esp + 8]
mov dword [ebx - 4], eax
mov eax, dword [esp + 0x70]
movq qword [ebx], xmm0
movq qword [ebx + 8], xmm1
mov dword [ebx + 0x10], esi
mov dword [ebx + 0x14], eax
mov eax, dword [esp + 4]
mov dword [ebx + 0x18], eax
mov eax, dword [esp + 0x30]
mov dword [ebx + 0x1c], eax
mov eax, dword [esp + 0x10]
movq qword [ebx + 0x20], xmm0
movq qword [ebx + 0x28], xmm1
mov dword [ebx + 0x30], ecx
mov dword [ebx + 0x34], edi
mov dword [ebx + 0x38], edx
mov dword [ebx + 0x3c], eax
mov byte [ebx + 0x44], 0
lea eax, [esp + 0x1ec]
push 0x100
push 0
push eax
call fcn.0064ad90
add esp, 0xc
call fcn.005cc884
mov edx, dword [eax + 0xc]
test edx, edx
jne 0x5cb9cb
mov eax, dword [esp + 0x20]
xor edi, edi
add eax, 0x20
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 0x14]
and eax, 0x3ff
mov dword [esp + 0x14], eax
add eax, 0xffffffef
mov dword [esp + 0x10], eax
push dword [esp + 0x1c]
push 4
push edi
call dword [sym.imp.user32.dll_MapVirtualKeyExW]
test eax, eax
je 0x5ca9ae
lea ecx, [esp + 0x80]
mov edx, eax
mov dword [esp + 0x18], eax
call fcn.005c286c
movzx eax, di
add eax, 0xffffffa0
cmp eax, 0xf
ja 0x5ca9bc
cmp eax, 0xa
je 0x5ca9bc
inc edi
cmp edi, 0x100
jne 0x5ca97b
jmp 0x5cae6a
call fcn.005cc884
cmp dword [eax + 0xc], 0
je 0x5ca9ae
mov edx, dword [eax + 0x14]
mov ecx, dword [eax + 0x10]
mov esi, eax
lea eax, [esp + 0x80]
push eax
push dword [esi + 0x1c]
push dword [esi + 0x18]
call fcn.005c468c
add esp, 0xc
mov edx, dword [esi + 4]
mov ecx, dword [esi]
mov dword [esp + 8], 0
mov dword [esp + 4], edx
and edx, eax
shr eax, 0x19
movd xmm0, eax
mov eax, ecx
add ecx, 0xfffffff8
punpcklbw xmm0, xmm0
mov dword [esp + 0x70], ecx
mov dword [esp + 0xc], eax
pshuflw xmm0, xmm0, 0
pshufd xmm1, xmm0, 0
movdqa xmmword [esp + 0x30], xmm1
movdqu xmm0, xmmword [eax + edx]
mov ebx, edx
movdqa xmmword [esp + 0x50], xmm0
pcmpeqb xmm0, xmm1
pmovmskb eax, xmm0
test ax, ax
je 0x5caa6b
lea esi, [eax - 1]
mov edx, dword [esp + 0x70]
lea ecx, [esp + 0x80]
and esi, eax
bsf eax, eax
add eax, ebx
and eax, dword [esp + 4]
shl eax, 3
sub edx, eax
call fcn.005c4c88
movdqa xmm1, xmmword [esp + 0x30]
test al, al
mov eax, esi
je 0x5caa35
jmp 0x5caaa0
movdqa xmm2, xmmword [esp + 0x50]
pcmpeqd xmm0, xmm0
pcmpeqb xmm2, xmm0
pmovmskb eax, xmm2
test eax, eax
jne 0x5ca9ae
mov eax, dword [esp + 8]
mov edx, ebx
lea edx, [ebx + eax + 0x10]
add eax, 0x10
mov dword [esp + 8], eax
and edx, dword [esp + 4]
mov eax, dword [esp + 0xc]
jmp 0x5caa20
mov eax, dword [esp + 0x80]
mov edx, 0
add eax, 0xfffffffb
movzx ecx, ax
lea eax, [ecx + 1]
cmp ecx, 0xc2
cmovae eax, edx
add eax, 0xffffffcc
cmp eax, 0x83
ja 0x5ca9ae
mov eax, dword [eax*4 + 0x5cba7c]
mov cx, 0xa4
mov dword [esp + 4], ecx
add eax, dword [esp + 0xc0]
jmp eax
cmp dword [esp + 0xf0], 0xf
jbe 0x5cb9ec
mov edi, dword [esp + 0x1c]
mov esi, 0xffffffe0
movzx ebx, word [esi + 0x7c32d6]
push edi
push 4
push ebx
call dword [sym.imp.user32.dll_MapVirtualKeyExW]
lea ecx, [esp + 0x174]
lea edx, [esp + 0x1ec]
push edi
push eax
push ebx
call fcn.005cc8ca
add esp, 0xc
cmp dword [esp + 0x174], 0
jne 0x5caf00
mov ecx, dword [esp + 0xa8]
lea edx, [esp + 0x178]
call fcn.005cca90
mov dword [esp + 0x84], eax
lea eax, [esp + 0x80]
mov dword [esp + 0x88], edx
mov dword [esp + 0x80], 0
lea ecx, [esp + 0xb4]
lea edx, [esp + 0xe8]
push eax
push ebx
call fcn.005c571b
add esp, 8
add esi, 2
jne 0x5cae81
xor ebx, ebx
mov byte [esp + 0x50], bl
call fcn.005c1420
test eax, eax
je 0x5cba2a
mov ecx, dword [eax + 0xc]
mov esi, dword [eax]
mov ebx, dword [eax + 4]
mov edx, 0x10
mov dword [esp + 4], ecx
mov ecx, dword [eax + 8]
mov dword [esp + 0x14], ecx
mov ecx, esi
add ecx, 1
mov dword [eax], ecx
mov ecx, ebx
adc ecx, 0
mov dword [eax + 4], ecx
mov ecx, 0x2a10
mov al, byte [0x803894]
call fcn.004889b0
test eax, eax
je 0x5cba50
mov edi, eax
add edi, 0x2800
push 0x210
push 0xff
push edi
call fcn.0064ad90
add esp, 0xc
mov eax, dword [esp + 4]
mov dword [esp + 0x80], edi
mov dword [esp + 0x84], 0x1ff
mov dword [esp + 0x88], 0x1c0
mov dword [esp + 0x8c], 0
mov dword [esp + 0x94], ebx
mov dword [esp + 0x90], esi
test byte [esp + 0x50], 1
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x98], eax
mov al, byte [esp + 0x1fc]
jne 0x5cafe3
and byte [esp + 0x28c], 0x7f
and byte [esp + 0x28d], 0x7f
and al, 0x7f
jmp 0x5cafe5
or al, 0x80
mov byte [esp + 0x1fc], al
test byte [esp + 0x50], 2
mov al, byte [esp + 0x1fd]
jne 0x5cb00e
and byte [esp + 0x28e], 0x7f
and byte [esp + 0x28f], 0x7f
and al, 0x7f
jmp 0x5cb010
or al, 0x80
mov byte [esp + 0x1fd], al
test byte [esp + 0x50], 4
mov al, byte [esp + 0x1fe]
jne 0x5cb039
and byte [esp + 0x290], 0x7f
and byte [esp + 0x291], 0x7f
and al, 0x7f
jmp 0x5cb03b
or al, 0x80
mov byte [esp + 0x1fe], al
mov cl, byte [esp + 0x50]
mov edi, dword [esp + 0x13c]
mov ebx, dword [esp + 0x12c]
xor esi, esi
mov al, byte [esp + 0x200]
mov edx, ecx
shr cl, 3
mov dword [esp + 8], ebx
mov dword [esp + 4], edi
and al, 0xfe
inc dl
or cl, al
mov eax, dword [esp + 0x134]
mov dword [esp + 0xa4], edx
mov byte [esp + 0x200], cl
mov dword [esp + 0xd8], eax
mov eax, dword [esp + 0x138]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x144]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x140]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x128]
mov dword [esp + 0x10], eax
add eax, 0xffffffd8
mov dword [esp + 0x14], eax
mov al, byte [esp + 0x14c]
mov dword [esp + 0xc], eax
push dword [esp + 0x1c]
push 4
push esi
call dword [sym.imp.user32.dll_MapVirtualKeyExW]
test eax, eax
mov dword [esp + 0x18], esi
je 0x5cb175
lea ecx, [esp + 0xac]
mov edx, eax
mov ebx, eax
call fcn.005c286c
mov eax, ebx
xor edi, edi
lea ecx, [esp + 0xdc]
mov edx, esi
shl eax, 0x10
or eax, 1
push edi
xor edi, edi
push dword [esp + 0x20]
push edi
push eax
call fcn.005cc088
add esp, 0x10
cmp dword [esp + 0xdc], 1
jne 0x5cb17e
lea ecx, [esp + 0x174]
lea edx, [esp + 0x1ec]
push dword [esp + 0x1c]
push ebx
push esi
call fcn.005cc8ca
add esp, 0xc
mov eax, dword [esp + 0x174]
mov esi, dword [esp + 0x4c]
test eax, eax
je 0x5cb1c3
mov ebx, dword [esp + 8]
mov edi, dword [esp + 4]
cmp eax, 1
jne 0x5cb1e8
mov eax, dword [esp + 0x178]
mov dword [esp + 0x64], eax
mov dword [esp + 0x60], 2
jmp 0x5cb22e
mov ebx, dword [esp + 8]
jmp 0x5cb448
movq xmm0, qword [esp + 0xac]
lea eax, [esp + 0xdc]
lea ecx, [esp + 0x174]
lea edx, [esp + 0x80]
movq qword [esp + 0xb4], xmm0
push eax
lea eax, [esp + 0xb8]
push eax
call fcn.005c5a81
add esp, 8
mov ebx, dword [esp + 8]
mov edi, dword [esp + 4]
jmp 0x5cb448
mov ecx, dword [esp + 0xa8]
lea edx, [esp + 0x178]
call fcn.005cca90
mov ebx, dword [esp + 8]
mov edi, dword [esp + 4]
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], edx
jmp 0x5cb20a
test byte [esp + 0x50], 6
jne 0x5cb214
cmp word [esp + 0xac], 0x6a
jne 0x5cb214
mov dword [esp + 0x64], 0x7f3994
mov dword [esp + 0x68], 1
mov dword [esp + 0x60], 0
jmp 0x5cb22e
mov eax, dword [esp + 0xe4]
movq xmm0, qword [esp + 0xdc]
mov dword [esp + 0x68], eax
movq qword [esp + 0x60], xmm0
mov eax, dword [esp + 0xc]
cmp byte [esp + 0x50], 6
jne 0x5cb40f
test al, al
jne 0x5cb40f
cmp dword [esp + 0xd8], 0
je 0x5cba11
mov ecx, esi
mov edx, edi
push 0
push dword [esp + 0x28]
push dword [esp + 0x30]
call fcn.005c49d8
add esp, 0xc
mov ecx, ebx
and ecx, eax
shr eax, 0x19
movd xmm0, eax
xor eax, eax
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
mov edx, dword [esp + 0x10]
movdqu xmm1, xmmword [edx + ecx]
movdqa xmm2, xmm1
pcmpeqb xmm2, xmm0
pmovmskb edx, xmm2
test dx, dx
je 0x5cb2bd
lea esi, [edx - 1]
and esi, edx
bsf edx, edx
add edx, ecx
and edx, ebx
neg edx
lea edi, [edx + edx*4]
mov edx, dword [esp + 0x14]
cmp byte [edx + edi*8], 0
mov edx, esi
jne 0x5cb299
jmp 0x5cb2dc
pcmpeqd xmm2, xmm2
pcmpeqb xmm1, xmm2
pmovmskb edx, xmm1
test edx, edx
jne 0x5cba11
lea ecx, [ecx + eax + 0x10]
add eax, 0x10
and ecx, ebx
jmp 0x5cb284
mov eax, dword [esp + 0x10]
mov dword [esp + 0xc], 0
cmp dword [eax + edi*8 - 0x14], 0
je 0x5cb3e9
lea esi, [eax + edi*8]
lea eax, [esp + 0xac]
mov ecx, dword [esi - 0x10]
mov edx, dword [esi - 0xc]
push eax
push dword [esi - 4]
push dword [esi - 8]
call fcn.005c468c
add esp, 0xc
mov ebx, dword [esi - 0x1c]
mov ecx, dword [esi - 0x20]
mov edi, dword [esp + 4]
mov dword [esp + 0x30], ebx
and ebx, eax
shr eax, 0x19
movd xmm0, eax
mov eax, ecx
add ecx, 0xffffffec
punpcklbw xmm0, xmm0
mov dword [esp + 0x70], ecx
mov dword [esp + 0x2c], eax
pshuflw xmm0, xmm0, 0
pshufd xmm1, xmm0, 0
movdqa xmmword [esp + 0xc0], xmm1
movdqu xmm0, xmmword [eax + ebx]
movdqa xmmword [esp + 0x150], xmm0
pcmpeqb xmm0, xmm1
pmovmskb eax, xmm0
test ax, ax
je 0x5cb3a3
lea edi, [eax - 1]
lea ecx, [esp + 0xac]
and edi, eax
bsf eax, eax
add eax, ebx
and eax, dword [esp + 0x30]
neg eax
lea esi, [eax + eax*4]
mov eax, dword [esp + 0x70]
lea edx, [eax + esi*4]
call fcn.005c4c88
test al, al
mov eax, edi
movdqa xmm1, xmmword [esp + 0xc0]
mov edi, dword [esp + 4]
je 0x5cb363
jmp 0x5cb3d8
movdqa xmm2, xmmword [esp + 0x150]
pcmpeqd xmm0, xmm0
pcmpeqb xmm2, xmm0
pmovmskb eax, xmm2
test eax, eax
jne 0x5cb3e3
mov eax, dword [esp + 0xc]
lea ebx, [ebx + eax + 0x10]
add eax, 0x10
mov dword [esp + 0xc], eax
and ebx, dword [esp + 0x30]
mov eax, dword [esp + 0x2c]
jmp 0x5cb34d
mov eax, dword [esp + 0x2c]
cmp dword [eax + esi*4 - 0xc], 0
je 0x5cb3ef
mov ebx, dword [esp + 8]
jmp 0x5cb40d
mov edi, dword [esp + 4]
jmp 0x5cb40d
lea ecx, [esp + 0xb4]
lea edx, [esp + 0x60]
call fcn.005c6e6c
cmp dword [esp + 0xb4], 0
mov ebx, dword [esp + 8]
je 0x5cb45b
xor eax, eax
movq xmm0, qword [esp + 0xac]
mov dword [esp + 0xc], eax
lea eax, [esp + 0x60]
lea ecx, [esp + 0xb4]
lea edx, [esp + 0x80]
movq qword [esp + 0x16c], xmm0
push eax
lea eax, [esp + 0x170]
push eax
call fcn.005c5a81
add esp, 8
mov esi, dword [esp + 0x18]
inc esi
cmp esi, 0x100
jne 0x5cb0ca
jmp 0x5cb48e
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0xbc]
lea eax, [eax + esi*4]
cmp ecx, dword [eax - 4]
jne 0x5cb488
push ecx
push dword [eax - 8]
push dword [esp + 0xc0]
call fcn.0064aeea
add esp, 0xc
test eax, eax
sete al
jmp 0x5cb48a
xor eax, eax
xor al, 1
jmp 0x5cb40f
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 0x4c]
mov edx, edi
mov byte [esp + 0x14c], al
movzx eax, byte [esp + 0x50]
mov ecx, esi
push eax
push dword [esp + 0x28]
push dword [esp + 0x30]
call fcn.005c49d8
add esp, 0xc
cmp dword [esp + 0x130], 0
mov edx, dword [esp + 0x10]
je 0x5cb5fe
mov ecx, ebx
mov edi, edx
add edx, 0xffffffd8
mov esi, ebx
mov dword [esp + 0x30], 0
mov dword [esp + 4], 0
and ecx, eax
shr eax, 0x19
mov dword [esp + 0x14], edx
mov edx, edi
mov dword [esp + 0x10], edi
movd xmm0, eax
mov dword [esp + 0xc0], eax
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
movdqu xmm1, xmmword [edx + ecx]
movdqa xmm2, xmm1
pcmpeqb xmm2, xmm0
pmovmskb edi, xmm2
test di, di
je 0x5cb542
lea edx, [edi - 1]
mov al, byte [esp + 0x50]
and edx, edi
bsf edi, edi
add edi, ecx
and edi, esi
neg edi
lea ebx, [edi + edi*4]
mov edi, dword [esp + 0x14]
cmp byte [edi + ebx*8], al
mov edi, edx
jne 0x5cb51b
jmp 0x5cb598
cmp dword [esp + 4], 1
mov ebx, 1
mov edi, esi
je 0x5cb566
pmovmskb edx, xmm1
xor ebx, ebx
test edx, edx
setne bl
bsf eax, edx
add eax, ecx
and eax, edi
mov dword [esp + 0x70], eax
pcmpeqd xmm2, xmm2
pcmpeqb xmm1, xmm2
pmovmskb edx, xmm1
test edx, edx
jne 0x5cb62f
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x10]
mov dword [esp + 4], ebx
lea ecx, [ecx + eax + 0x10]
add eax, 0x10
mov dword [esp + 0x30], eax
and ecx, edi
jmp 0x5cb50a
mov eax, dword [esp + 0x10]
movsd xmm1, qword [esp + 0x88]
movq xmm0, qword [esp + 0x80]
mov edx, dword [eax + ebx*8 - 0x1c]
movsd qword [eax + ebx*8 - 0x18], xmm1
mov ecx, dword [eax + ebx*8 - 0x20]
movsd xmm1, qword [esp + 0x90]
test ecx, ecx
movsd qword [eax + ebx*8 - 0x10], xmm1
movq xmm1, qword [esp + 0x98]
movq qword [eax + ebx*8 - 0x20], xmm0
movq qword [eax + ebx*8 - 8], xmm1
mov ebx, dword [esp + 0xa4]
je 0x5cb5f0
call fcn.005c4f15
cmp bl, 0x10
jne 0x5caf0b
jmp 0x5cb6e0
mov edx, esi
lea ecx, [esp + 0x128]
mov esi, eax
push dword [esp + 0x24]
push dword [esp + 0x2c]
push edi
call fcn.0065bdd9
mov eax, esi
add esp, 0xc
mov edx, dword [esp + 0x128]
mov ebx, dword [esp + 0x12c]
jmp 0x5cb4c9
mov ecx, dword [esp + 0x10]
mov ebx, dword [esp + 0x70]
mov al, byte [ecx + ebx]
test al, al
js 0x5cb64c
movdqa xmm0, xmmword [ecx]
pmovmskb eax, xmm0
bsf ebx, eax
mov al, byte [ecx + ebx]
movsd xmm1, qword [esp + 0x90]
lea edx, [esp + 0x178]
movq xmm0, qword [esp + 0x98]
movq xmm2, qword [esp + 0x80]
and al, 1
movzx eax, al
sub dword [esp + 0x130], eax
lea eax, [ebx - 0x10]
and eax, edi
movsd qword [edx + 0x13], xmm1
movq xmm1, qword [esp + 0x88]
movq qword [edx + 0x1b], xmm0
movq qword [edx + 3], xmm2
movq qword [edx + 0xb], xmm1
mov edx, dword [esp + 0xc0]
mov byte [ecx + ebx], dl
neg ebx
mov byte [eax + ecx + 0x10], dl
inc dword [esp + 0x134]
lea eax, [ebx + ebx*4]
lea eax, [ecx + eax*8 - 0x27]
mov cl, byte [esp + 0x50]
mov byte [eax - 1], cl
push 0x27
lea ecx, [esp + 0x178]
push ecx
push eax
call fcn.0064a810
add esp, 0xc
mov ebx, dword [esp + 0xa4]
jmp 0x5cb5f0
cmp byte [esp + 0x14c], 0
je 0x5cb8f8
mov edx, dword [esp + 0x138]
mov ecx, dword [esp + 0x13c]
mov eax, dword [esp + 0x134]
mov dword [esp + 4], 0
mov dword [esp + 0x2c], edx
mov dword [esp + 0x150], ecx
mov edx, dword [esp + 0x144]
mov ecx, dword [esp + 0x140]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x28], edx
mov dword [esp + 0x24], ecx
cmp dword [esp + 0x4c], 0
je 0x5cb8e6
movzx eax, byte [esp + 4]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x150]
push eax
push dword [esp + 0x2c]
push dword [esp + 0x2c]
call fcn.005c49d8
add esp, 0xc
mov ecx, esi
mov dword [esp + 0x30], 0
and ecx, eax
shr eax, 0x19
movd xmm0, eax
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
mov edx, dword [esp + 0x10]
movdqu xmm1, xmmword [edx + ecx]
movdqa xmm2, xmm1
pcmpeqb xmm2, xmm0
pmovmskb edx, xmm2
test dx, dx
je 0x5cb7b9
lea edi, [edx - 1]
mov eax, dword [esp + 4]
and edi, edx
bsf edx, edx
add edx, ecx
and edx, esi
neg edx
lea ebx, [edx + edx*4]
mov edx, dword [esp + 0x14]
cmp al, byte [edx + ebx*8]
mov edx, edi
jne 0x5cb792
jmp 0x5cb7e0
pcmpeqd xmm2, xmm2
pcmpeqb xmm1, xmm2
pmovmskb edx, xmm1
test edx, edx
jne 0x5cb8e6
mov eax, dword [esp + 0x30]
lea ecx, [ecx + eax + 0x10]
add eax, 0x10
mov dword [esp + 0x30], eax
and ecx, esi
jmp 0x5cb77d
mov eax, dword [esp + 0x10]
cmp dword [eax + ebx*8 - 0x14], 0
je 0x5cb8e6
mov eax, dword [esp + 0x10]
lea edi, [eax + ebx*8]
mov edx, dword [edi - 0xc]
mov ecx, dword [edi - 0x10]
push 0x7c32d8
push dword [edi - 4]
push dword [edi - 8]
call fcn.005c468c
add esp, 0xc
mov edx, dword [edi - 0x1c]
mov ecx, dword [edi - 0x20]
mov dword [esp + 0xc], 0
mov dword [esp + 0xc0], edx
and edx, eax
shr eax, 0x19
movd xmm0, eax
mov eax, ecx
add ecx, 0xffffffec
punpcklbw xmm0, xmm0
mov dword [esp + 0x18], ecx
mov dword [esp + 8], eax
pshuflw xmm0, xmm0, 0
pshufd xmm1, xmm0, 0
movdqa xmmword [esp + 0x70], xmm1
movdqu xmm0, xmmword [eax + edx]
mov dword [esp + 0x30], edx
movdqa xmmword [esp + 0x50], xmm0
pcmpeqb xmm0, xmm1
pmovmskb eax, xmm0
test ax, ax
je 0x5cb8a1
lea ebx, [eax - 1]
mov ecx, 0x7c32d8
and ebx, eax
bsf eax, eax
add eax, dword [esp + 0x30]
and eax, dword [esp + 0xc0]
neg eax
lea edi, [eax + eax*4]
mov eax, dword [esp + 0x18]
lea edx, [eax + edi*4]
call fcn.005c4c88
movdqa xmm1, xmmword [esp + 0x70]
test al, al
mov eax, ebx
je 0x5cb865
jmp 0x5cb8da
movdqa xmm2, xmmword [esp + 0x50]
pcmpeqd xmm0, xmm0
pcmpeqb xmm2, xmm0
pmovmskb eax, xmm2
test eax, eax
jne 0x5cb8e6
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0xc]
lea edx, [edx + eax + 0x10]
add eax, 0x10
mov dword [esp + 0xc], eax
and edx, dword [esp + 0xc0]
mov eax, dword [esp + 8]
jmp 0x5cb84e
mov eax, dword [esp + 8]
mov dword [eax + edi*4 - 0xc], 4
mov eax, dword [esp + 4]
inc al
cmp al, 0x10
mov dword [esp + 4], eax
jne 0x5cb730
lea edi, [esp + 0x178]
lea esi, [esp + 0xe8]
mov ecx, 0x1a
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x20]
mov edi, dword [esp + 0xd0]
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
and edi, ecx
movdqu xmm0, xmmword [eax + edi]
pmovmskb edx, xmm0
test edx, edx
jne 0x5cb945
mov esi, 0x10
add edi, esi
add esi, 0x10
and edi, ecx
movdqu xmm0, xmmword [eax + edi]
pmovmskb edx, xmm0
test edx, edx
je 0x5cb931
bsf edx, edx
add edx, edi
and edx, ecx
mov bl, byte [eax + edx]
test bl, bl
js 0x5cb961
movdqa xmm0, xmmword [eax]
pmovmskb edx, xmm0
bsf edx, edx
mov bl, byte [eax + edx]
lea esi, [edx - 0x10]
and bl, 1
and esi, ecx
mov ecx, dword [esp + 0xd4]
mov byte [eax + edx], cl
neg edx
mov byte [esi + eax + 0x10], cl
lea esi, [esp + 0x174]
imul ecx, edx, 0x70
movzx edx, bl
mov ebx, dword [esp + 0x20]
lea edi, [eax + ecx - 0x6c]
sub dword [ebx + 8], edx
lea edx, [eax + ecx]
mov ecx, dword [esp + 0x1c]
mov dword [edi - 4], ecx
mov ecx, 0x1b
rep movsd dword es:[edi], dword [esi]
inc dword [ebx + 0xc]
jmp 0x5ca7ff
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x18]
push dword [esp + 8]
push dword [esp + 0x54]
push dword [esp + 0x78]
call fcn.0065b108
add esp, 0xc
jmp 0x5ca81c
lea ecx, [esp + 0x108]
push dword [esp + 0x30]
push dword [esp + 8]
push dword [esp + 0x78]
push esi
call fcn.0065b985
add esp, 0x10
jmp 0x5ca957
lea ecx, [esp + 0xe8]
mov edx, 0x10
push dword [ecx + 0x1c]
push dword [ecx + 0x18]
push dword [ecx + 0x14]
push dword [ecx + 0x10]
call fcn.0065b985
add esp, 0x10
jmp 0x5cae78
mov ecx, str.called__Option::unwrap____on_a__None__value_rustc_82e1608dfa6e0b5569232559e3d385fea5a93112library_std_src_syncmpmclist.rs
mov edx, 0x2b
push 0x7c32e0
call fcn.006522d0
add esp, 4
ud2
mov ecx, str.cannot_access_a_Thread_Local_Storage_value_during_or_after_destruction_rustc_82e1608dfa6e0b5569232559e3d385fea5a93112library_std_src_threadlocal.rs
mov edx, 0x46
push 0x7f49d0
push 0x7c2394
lea eax, [esp + 0x17c]
push eax
call fcn.006525c0
add esp, 0xc
ud2
mov ecx, 0x2a10
call fcn.004c4f10
ud2
lea eax, [esp + 0x174]
mov ecx, str.cannot_access_a_Thread_Local_Storage_value_during_or_after_destruction_rustc_82e1608dfa6e0b5569232559e3d385fea5a93112library_std_src_threadlocal.rs
mov edx, 0x46
push 0x7f49d0
push 0x7c2394
jmp 0x5cba45