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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x54
mov edi, edx
mov edx, dword [esp + 0x6c]
mov eax, dword [esp + 0x68]
mov eax, dword [eax + 4]
mov edx, dword [edx + 4]
cmp eax, edx
cmovg edx, eax
test edx, edx
je 0x5ac805
mov dword [esp + 0x50], ecx
mov ebx, dword [esp + 0x70]
cmp byte [ebx + 0x14], 0
mov dword [esp], edx
jne 0x5ac838
mov ecx, dword [ebx + 8]
mov esi, dword [ebx + 0x10]
cmp ecx, dword [ebx + 0xc]
jne 0x5ac823
mov dword [esp + 0x2c], edi
lea eax, [ecx + ecx*2]
shr eax, 1
test ecx, ecx
mov edi, 0x20
cmovne edi, eax
cmp edi, ecx
jbe 0x5ac82e
cmp edi, 0x3fffffff
ja 0x5ac82e
lea eax, [edi*4]
push eax
push dword [ebx + 4]
call sym.adb.exe_OPENSSL_realloc
add esp, 8
test eax, eax
je 0x5ac82e
mov dword [ebx + 4], eax
mov dword [ebx + 0xc], edi
mov ecx, dword [ebx + 8]
mov edi, dword [esp + 0x2c]
jmp 0x5ac826
mov dword [edi], 0
mov dword [ecx + 0xc], 0
mov dword [ecx + 4], 0
mov ebp, 1
jmp 0x5acd9b
mov eax, dword [ebx + 4]
mov dword [eax + ecx*4], esi
inc dword [ebx + 8]
jmp 0x5ac838
mov word [ebx + 0x14], 0x101
mov edi, dword [esp + 0x2c]
push ebx
call sym.adb.exe_BN_CTX_get
add esp, 4
mov esi, eax
push ebx
call sym.adb.exe_BN_CTX_get
add esp, 4
mov ecx, ebx
mov ebx, eax
push ecx
call sym.adb.exe_BN_CTX_get
add esp, 4
xor ebp, ebp
test esi, esi
je 0x5acd7e
test ebx, ebx
je 0x5acd7e
test eax, eax
je 0x5acd7e
mov dword [esp + 0x1c], eax
mov ebp, dword [esp + 0x68]
cmp esi, ebp
mov dword [esp + 0x10], ebx
je 0x5ac8c3
push dword [ebp + 4]
push esi
call fcn.0059f5c0
add esp, 8
test eax, eax
je 0x5acd7c
mov eax, dword [ebp + 4]
lea ecx, [eax*4]
test ecx, ecx
je 0x5ac8b6
push ecx
push dword [ebp]
push dword [esi]
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
mov eax, dword [ebp + 4]
mov dword [esi + 4], eax
mov eax, dword [ebp + 0xc]
mov dword [esi + 0xc], eax
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x6c]
cmp ebx, eax
mov ebp, 0
je 0x5ac917
push dword [eax + 4]
push ebx
mov ebx, eax
call fcn.0059f5c0
add esp, 8
test eax, eax
je 0x5acd7e
mov eax, dword [ebx + 4]
lea ecx, [eax*4]
test ecx, ecx
mov edx, ebx
mov ebx, dword [esp + 0x10]
je 0x5ac90e
push ecx
push dword [edx]
push dword [ebx]
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov edx, dword [esp + 0x78]
add esp, 0xc
mov eax, dword [edx + 4]
mov dword [ebx + 4], eax
mov eax, dword [edx + 0xc]
mov dword [ebx + 0xc], eax
mov dword [esp + 0x2c], edi
mov eax, dword [esi + 4]
mov edx, eax
mov ebx, dword [esp]
sub edx, ebx
mov dword [esp + 0x18], esi
jbe 0x5ac95a
mov ecx, dword [esi]
xor esi, esi
cmp edx, 8
jb 0x5aca64
lea esi, [edx - 8]
mov ebx, esi
shr ebx, 3
inc ebx
mov edi, ebx
and edi, 3
cmp esi, 0x18
jae 0x5ac99a
pxor xmm0, xmm0
xor ebp, ebp
pxor xmm1, xmm1
jmp 0x5aca07
push ebx
push esi
call fcn.0059f5c0
add esp, 8
test eax, eax
je 0x5acd7e
mov eax, dword [esi + 4]
mov ecx, ebx
sub ecx, eax
shl ecx, 2
test ecx, ecx
mov edx, ebx
je 0x5aca84
shl eax, 2
add eax, dword [esi]
push ecx
push 0
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
mov edx, dword [esp + 0xc]
add esp, 0xc
jmp 0x5aca84
and ebx, 0xfffffffc
mov esi, dword [esp]
lea esi, [ecx + esi*4]
add esi, 0x70
pxor xmm0, xmm0
xor ebp, ebp
pxor xmm1, xmm1
movdqu xmm2, xmmword [esi + ebp*4 - 0x70]
por xmm2, xmm0
movdqu xmm0, xmmword [esi + ebp*4 - 0x60]
por xmm0, xmm1
movdqu xmm1, xmmword [esi + ebp*4 - 0x50]
movdqu xmm3, xmmword [esi + ebp*4 - 0x40]
movdqu xmm4, xmmword [esi + ebp*4 - 0x30]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [esi + ebp*4 - 0x20]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [esi + ebp*4 - 0x10]
por xmm0, xmm4
movdqu xmm1, xmmword [esi + ebp*4]
por xmm1, xmm2
add ebp, 0x20
add ebx, 0xfffffffc
jne 0x5ac9b0
mov ebx, edx
and ebx, 0xfffffff8
test edi, edi
je 0x5aca3a
add ebp, dword [esp]
lea esi, [ecx + ebp*4]
add esi, 0x10
shl edi, 5
xor ebp, ebp
nop
movdqu xmm2, xmmword [esi + ebp - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [esi + ebp]
por xmm1, xmm2
add ebp, 0x20
cmp edi, ebp
jne 0x5aca20
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd esi, xmm0
cmp edx, ebx
jne 0x5aca5f
mov edx, dword [esp]
xor ebp, ebp
jmp 0x5aca78
add ebx, dword [esp]
xor ebp, ebp
mov edx, dword [esp]
nop word [eax + eax]
or esi, dword [ecx + ebx*4]
inc ebx
cmp eax, ebx
jne 0x5aca70
test esi, esi
mov esi, dword [esp + 0x18]
jne 0x5acd64
mov dword [esi + 4], edx
mov ebx, dword [esp + 0x10]
mov eax, dword [ebx + 4]
mov edi, edx
mov edx, eax
sub edx, edi
jbe 0x5acac7
mov ecx, dword [ebx]
xor esi, esi
mov ebx, edi
cmp edx, 8
jb 0x5acbd4
lea esi, [edx - 8]
mov ebx, esi
shr ebx, 3
inc ebx
mov edi, ebx
and edi, 3
cmp esi, 0x18
jae 0x5acb07
pxor xmm0, xmm0
xor ebp, ebp
pxor xmm1, xmm1
jmp 0x5acb77
push edi
push ebx
call fcn.0059f5c0
add esp, 8
test eax, eax
je 0x5acd7e
mov eax, dword [ebx + 4]
mov ecx, edi
sub ecx, eax
shl ecx, 2
test ecx, ecx
mov edx, edi
je 0x5acbf8
shl eax, 2
add eax, dword [ebx]
push ecx
push 0
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
mov edx, dword [esp + 0xc]
add esp, 0xc
jmp 0x5acbf8
and ebx, 0xfffffffc
mov esi, dword [esp]
lea esi, [ecx + esi*4]
add esi, 0x70
pxor xmm0, xmm0
xor ebp, ebp
pxor xmm1, xmm1
nop dword [eax]
movdqu xmm2, xmmword [esi + ebp*4 - 0x70]
por xmm2, xmm0
movdqu xmm0, xmmword [esi + ebp*4 - 0x60]
por xmm0, xmm1
movdqu xmm1, xmmword [esi + ebp*4 - 0x50]
movdqu xmm3, xmmword [esi + ebp*4 - 0x40]
movdqu xmm4, xmmword [esi + ebp*4 - 0x30]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [esi + ebp*4 - 0x20]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [esi + ebp*4 - 0x10]
por xmm0, xmm4
movdqu xmm1, xmmword [esi + ebp*4]
por xmm1, xmm2
add ebp, 0x20
add ebx, 0xfffffffc
jne 0x5acb20
mov ebx, edx
and ebx, 0xfffffff8
test edi, edi
je 0x5acbaa
add ebp, dword [esp]
lea esi, [ecx + ebp*4]
add esi, 0x10
shl edi, 5
xor ebp, ebp
nop
movdqu xmm2, xmmword [esi + ebp - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [esi + ebp]
por xmm1, xmm2
add ebp, 0x20
cmp edi, ebp
jne 0x5acb90
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd esi, xmm0
cmp edx, ebx
jne 0x5acbcf
mov edx, dword [esp]
xor ebp, ebp
jmp 0x5acbe8
add ebx, dword [esp]
xor ebp, ebp
mov edx, dword [esp]
nop word [eax + eax]
or esi, dword [ecx + ebx*4]
inc ebx
cmp eax, ebx
jne 0x5acbe0
test esi, esi
mov esi, dword [esp + 0x18]
mov ebx, dword [esp + 0x10]
jne 0x5acd64
mov dword [ebx + 4], edx
mov ebx, dword [esp + 0x1c]
mov eax, dword [ebx + 4]
mov edi, edx
mov edx, eax
sub edx, edi
jbe 0x5acc3b
mov ecx, dword [ebx]
xor esi, esi
mov ebx, edi
cmp edx, 8
jb 0x5acd44
lea esi, [edx - 8]
mov ebx, esi
shr ebx, 3
inc ebx
mov edi, ebx
and edi, 3
cmp esi, 0x18
jae 0x5acc7b
pxor xmm0, xmm0
xor ebp, ebp
pxor xmm1, xmm1
jmp 0x5acce8
push edi
push ebx
call fcn.0059f5c0
add esp, 8
test eax, eax
je 0x5acd7e
mov eax, dword [ebx + 4]
mov ecx, edi
sub ecx, eax
shl ecx, 2
test ecx, ecx
mov edx, edi
je 0x5acda5
shl eax, 2
add eax, dword [ebx]
push ecx
push 0
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
mov edx, dword [esp + 0xc]
add esp, 0xc
jmp 0x5acda5
and ebx, 0xfffffffc
mov esi, dword [esp]
lea esi, [ecx + esi*4]
add esi, 0x70
pxor xmm0, xmm0
xor ebp, ebp
pxor xmm1, xmm1
movdqu xmm2, xmmword [esi + ebp*4 - 0x70]
por xmm2, xmm0
movdqu xmm0, xmmword [esi + ebp*4 - 0x60]
por xmm0, xmm1
movdqu xmm1, xmmword [esi + ebp*4 - 0x50]
movdqu xmm3, xmmword [esi + ebp*4 - 0x40]
movdqu xmm4, xmmword [esi + ebp*4 - 0x30]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [esi + ebp*4 - 0x20]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [esi + ebp*4 - 0x10]
por xmm0, xmm4
movdqu xmm1, xmmword [esi + ebp*4]
por xmm1, xmm2
add ebp, 0x20
add ebx, 0xfffffffc
jne 0x5acc91
mov ebx, edx
and ebx, 0xfffffff8
test edi, edi
je 0x5acd1a
add ebp, dword [esp]
lea esi, [ecx + ebp*4]
add esi, 0x10
shl edi, 5
xor ebp, ebp
nop
movdqu xmm2, xmmword [esi + ebp - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [esi + ebp]
por xmm1, xmm2
add ebp, 0x20
cmp edi, ebp
jne 0x5acd00
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd esi, xmm0
cmp edx, ebx
jne 0x5acd3f
mov edx, dword [esp]
xor ebp, ebp
jmp 0x5acd58
add ebx, dword [esp]
xor ebp, ebp
mov edx, dword [esp]
nop word [eax + eax]
or esi, dword [ecx + ebx*4]
inc ebx
cmp eax, ebx
jne 0x5acd50
test esi, esi
mov esi, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
je 0x5acda5
push 0x199
push str.external_boringssl_src_crypto_fipsmodule_bn_bn.c
push 0x66
push 0
push 3
call sym.adb.exe_ERR_put_error
add esp, 0x14
xor ebp, ebp
mov esi, dword [esp + 0x70]
cmp byte [esi + 0x14], 0
jne 0x5acd9b
mov eax, dword [esi + 4]
mov ecx, dword [esi + 8]
lea edx, [ecx - 1]
mov dword [esi + 8], edx
mov eax, dword [eax + ecx*4 - 4]
mov dword [esi + 0x10], eax
mov eax, ebp
add esp, 0x54
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [ebx + 4], edx
mov eax, dword [esp + 0x68]
mov ecx, dword [eax + 4]
mov eax, ecx
shl eax, 5
mov edi, dword [esp + 0x6c]
add ecx, dword [edi + 4]
shl ecx, 5
cmp ecx, eax
jae 0x5acdd9
push 0x4e
push str.external_boringssl_src_crypto_fipsmodule_bn_gcd_extra.c
push 0x66
push 0
push 3
call sym.adb.exe_ERR_put_error
add esp, 0x14
jmp 0x5acd7e
mov eax, 0
test ecx, ecx
je 0x5ad5e5
lea eax, [edx - 1]
lea edi, [edx*4]
mov dword [esp + 0x14], edi
lea edi, [edx*4 - 4]
mov dword [esp + 0x34], edi
mov edi, edx
and edi, 0xfffffff8
mov dword [esp + 0x28], edi
mov dword [esp + 0x20], eax
and eax, 0xfffffff8
mov dword [esp + 0x38], eax
lea eax, [edx + 3]
mov dword [esp + 0x44], eax
and eax, 3
mov dword [esp + 0x40], eax
lea eax, [edx - 2]
mov dword [esp + 0x3c], eax
xor edi, edi
xor eax, eax
mov dword [esp + 0x48], ecx
jmp 0x5ace5d
mov eax, dword [esp + 0x30]
sub eax, dword [esp + 0x24]
mov edi, dword [esp + 0x4c]
inc edi
mov ecx, dword [esp + 0x48]
cmp edi, ecx
mov esi, dword [esp + 0x18]
je 0x5ad5e5
mov dword [esp + 0x4c], edi
mov dword [esp + 0x30], eax
mov eax, dword [esi]
mov ecx, dword [eax]
and ecx, 1
neg ecx
mov ebp, edx
mov edx, dword [esp + 0x10]
mov edx, dword [edx]
mov ebx, dword [edx]
and ebx, 1
neg ebx
and ebx, ecx
push ebp
push edx
push eax
mov edi, dword [esp + 0x28]
push dword [edi]
call fcn.005a0630
add esp, 0x10
mov dword [esp + 8], eax
dec eax
mov dword [esp + 4], ebx
and eax, ebx
mov ebx, ebp
mov ebp, eax
mov esi, dword [esi]
mov edx, dword [edi]
not eax
mov edi, 0
cmp ebx, 8
mov dword [esp + 0xc], eax
jb 0x5acf40
mov edi, dword [esp + 0x14]
add edi, edx
cmp esi, edi
jae 0x5aced5
mov edi, dword [esp + 0x14]
mov ecx, ebx
lea ebx, [esi + edi]
mov edi, 0
cmp edx, ebx
mov ebx, ecx
jb 0x5acf40
movd xmm0, ebp
pshufd xmm0, xmm0, 0
movd xmm1, eax
pshufd xmm1, xmm1, 0
xor edi, edi
mov ebx, dword [esp + 0x28]
nop dword [eax]
movdqu xmm2, xmmword [edx + edi*4]
movdqu xmm3, xmmword [edx + edi*4 + 0x10]
movdqu xmm4, xmmword [esi + edi*4]
movdqu xmm5, xmmword [esi + edi*4 + 0x10]
pand xmm2, xmm0
pand xmm3, xmm0
pand xmm4, xmm1
por xmm4, xmm2
pand xmm5, xmm1
por xmm5, xmm3
movdqu xmmword [esi + edi*4], xmm4
movdqu xmmword [esi + edi*4 + 0x10], xmm5
add edi, 8
cmp ebx, edi
jne 0x5acef0
mov edi, ebx
mov eax, dword [esp]
cmp eax, ebx
mov ebx, eax
mov eax, dword [esp + 0xc]
je 0x5acfa3
nop
mov ecx, edi
or ecx, 1
test bl, 1
je 0x5acf61
mov ebx, dword [edx + edi*4]
and ebx, ebp
mov dword [esp + 0x24], ebx
mov ebx, dword [esi + edi*4]
and ebx, eax
or ebx, dword [esp + 0x24]
mov dword [esi + edi*4], ebx
mov edi, ecx
mov ebx, dword [esp]
cmp ebx, ecx
je 0x5acfa3
nop dword [eax + eax]
mov ebx, dword [edx + edi*4]
and ebx, ebp
mov eax, ebp
mov ebp, dword [esi + edi*4]
mov ecx, dword [esp + 0xc]
and ebp, ecx
or ebp, ebx
mov dword [esi + edi*4], ebp
mov ebx, dword [edx + edi*4 + 4]
and ebx, eax
mov ebp, dword [esi + edi*4 + 4]
and ebp, ecx
or ebp, ebx
mov ebx, dword [esp]
mov dword [esi + edi*4 + 4], ebp
mov ebp, eax
add edi, 2
cmp ebx, edi
jne 0x5acf70
mov esi, dword [esp + 8]
neg esi
push ebx
mov eax, dword [esp + 0x1c]
push dword [eax]
mov edi, dword [esp + 0x18]
push dword [edi]
mov ebp, ebx
mov ebx, dword [esp + 0x28]
push dword [ebx]
call fcn.005a0630
add esp, 0x10
mov edx, dword [esp + 4]
and edx, esi
xor esi, esi
mov eax, dword [edi]
mov ecx, dword [ebx]
mov dword [esp + 4], edx
not edx
mov dword [esp + 0xc], edx
cmp ebp, 8
jae 0x5acfe9
mov ebx, dword [esp]
jmp 0x5ad070
mov edi, dword [esp + 0x14]
add edi, ecx
cmp eax, edi
mov ebx, dword [esp]
mov edx, dword [esp + 4]
mov ebp, dword [esp + 0xc]
jae 0x5ad008
mov edi, dword [esp + 0x14]
add edi, eax
cmp ecx, edi
jb 0x5ad070
movd xmm0, edx
pshufd xmm0, xmm0, 0
movd xmm1, ebp
pshufd xmm1, xmm1, 0
xor esi, esi
mov edi, dword [esp + 0x28]
movdqu xmm2, xmmword [ecx + esi*4]
movdqu xmm3, xmmword [ecx + esi*4 + 0x10]
movdqu xmm4, xmmword [eax + esi*4]
movdqu xmm5, xmmword [eax + esi*4 + 0x10]
pand xmm2, xmm0
pand xmm3, xmm0
pand xmm4, xmm1
por xmm4, xmm2
pand xmm5, xmm1
por xmm5, xmm3
movdqu xmmword [eax + esi*4], xmm4
movdqu xmmword [eax + esi*4 + 0x10], xmm5
add esi, 8
cmp edi, esi
jne 0x5ad020
mov esi, edi
mov ebx, dword [esp]
cmp ebx, edi
je 0x5ad0d3
nop dword [eax]
mov edx, ecx
mov edi, esi
or edi, 1
test bl, 1
je 0x5ad091
mov ebx, dword [edx + esi*4]
and ebx, dword [esp + 4]
mov ebp, dword [eax + esi*4]
and ebp, dword [esp + 0xc]
or ebp, ebx
mov dword [eax + esi*4], ebp
mov esi, edi
mov ecx, dword [esp]
cmp ecx, edi
mov ebp, dword [esp + 4]
je 0x5ad0d3
nop dword [eax]
mov edi, dword [edx + esi*4]
and edi, ebp
mov ebx, dword [eax + esi*4]
mov ecx, edx
mov edx, dword [esp + 0xc]
and ebx, edx
or ebx, edi
mov dword [eax + esi*4], ebx
mov edi, dword [ecx + esi*4 + 4]
and edi, ebp
mov ebx, dword [eax + esi*4 + 4]
and ebx, edx
mov edx, ecx
or ebx, edi
mov dword [eax + esi*4 + 4], ebx
mov ecx, dword [esp]
add esi, 2
cmp ecx, esi
jne 0x5ad0a0
mov eax, dword [esp + 0x18]
mov edx, dword [eax]
mov ecx, dword [edx]
mov eax, ecx
and eax, 1
mov dword [esp + 4], eax
mov eax, dword [esp + 0x10]
mov esi, dword [eax]
mov eax, dword [esi]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x1c]
mov ebp, dword [eax]
mov eax, dword [esp + 0x20]
test eax, eax
je 0x5ad1b9
xor ecx, ecx
cmp eax, 8
jb 0x5ad180
mov esi, dword [esp + 0x14]
add esi, edx
cmp ebp, esi
mov edi, dword [esp + 0x38]
jae 0x5ad121
mov esi, dword [esp + 0x34]
add esi, ebp
cmp edx, esi
jb 0x5ad180
xor ecx, ecx
nop word cs:[eax + eax]
movdqu xmm0, xmmword [edx + ecx*4 + 0x10]
movdqu xmm1, xmmword [edx + ecx*4]
movdqu xmm2, xmmword [edx + ecx*4 + 4]
movdqu xmm3, xmmword [edx + ecx*4 + 0x14]
psrld xmm1, 1
pslld xmm2, 0x1f
por xmm2, xmm1
psrld xmm0, 1
pslld xmm3, 0x1f
por xmm3, xmm0
movdqu xmmword [ebp + ecx*4], xmm2
movdqu xmmword [ebp + ecx*4 + 0x10], xmm3
add ecx, 8
cmp edi, ecx
jne 0x5ad130
mov ecx, edi
cmp eax, edi
je 0x5ad218
mov eax, dword [esp + 0x3c]
sub eax, ecx
mov ebx, dword [esp + 0x40]
test ebx, ebx
mov dword [esp + 8], eax
je 0x5ad1c3
nop word cs:[eax + eax]
mov esi, dword [edx + ecx*4]
mov eax, dword [edx + ecx*4 + 4]
shld eax, esi, 0x1f
lea edi, [ecx + 1]
mov dword [ebp + ecx*4], eax
mov ecx, edi
dec ebx
jne 0x5ad1a0
jmp 0x5ad1c5
shr ecx, 1
mov dword [ebp], ecx
mov ecx, dword [esp]
jmp 0x5ad225
mov edi, ecx
cmp dword [esp + 8], 3
mov esi, dword [esp + 0x20]
jb 0x5ad218
mov eax, dword [edx + edi*4]
mov ecx, dword [edx + edi*4 + 4]
shld ecx, eax, 0x1f
mov dword [ebp + edi*4], ecx
mov eax, dword [edx + edi*4 + 4]
mov ecx, dword [edx + edi*4 + 8]
shld ecx, eax, 0x1f
mov dword [ebp + edi*4 + 4], ecx
mov eax, dword [edx + edi*4 + 8]
mov ecx, dword [edx + edi*4 + 0xc]
shld ecx, eax, 0x1f
mov dword [ebp + edi*4 + 8], ecx
mov eax, dword [edx + edi*4 + 0xc]
mov ecx, dword [edx + edi*4 + 0x10]
shld ecx, eax, 0x1f
mov dword [ebp + edi*4 + 0xc], ecx
lea eax, [edi + 4]
mov edi, eax
cmp esi, eax
jne 0x5ad1d0
mov ecx, dword [esp]
mov eax, dword [edx + ecx*4 - 4]
shr eax, 1
mov dword [ebp + ecx*4 - 4], eax
and dword [esp + 0xc], 1
mov eax, dword [esp + 4]
lea esi, [eax - 1]
xor edi, edi
cmp ecx, 8
mov dword [esp + 0x24], esi
mov dword [esp + 8], edx
jb 0x5ad2e0
mov eax, dword [esp + 0x14]
add eax, ebp
cmp edx, eax
jae 0x5ad260
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 8]
add eax, ecx
cmp ebp, eax
jb 0x5ad2e0
movd xmm0, esi
pshufd xmm0, xmm0, 0
xor edi, edi
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 8]
jmp 0x5ad2ae
movdqu xmm3, xmmword [ebp + edi*4]
movdqu xmm4, xmmword [ebp + edi*4 + 0x10]
pand xmm3, xmm0
por xmm3, xmm2
pand xmm4, xmm0
por xmm4, xmm1
movdqu xmmword [ecx + edi*4], xmm3
movdqu xmmword [ecx + edi*4 + 0x10], xmm4
add edi, 8
cmp eax, edi
je 0x5ad2ca
pxor xmm2, xmm2
pxor xmm1, xmm1
cmp dword [esp + 4], 0
je 0x5ad280
movdqu xmm2, xmmword [ecx + edi*4]
movdqu xmm1, xmmword [ecx + edi*4 + 0x10]
jmp 0x5ad280
mov edi, eax
cmp dword [esp], eax
je 0x5ad316
nop word cs:[eax + eax]
mov ebx, edi
or ebx, 1
test byte [esp], 1
je 0x5ad30d
mov ecx, dword [ebp + edi*4]
and ecx, esi
mov eax, dword [esp + 4]
mov esi, eax
test eax, eax
mov eax, dword [esp + 8]
je 0x5ad302
mov esi, dword [eax + edi*4]
or esi, ecx
mov dword [eax + edi*4], esi
mov edi, ebx
mov esi, dword [esp + 0x24]
cmp dword [esp], ebx
jne 0x5ad415
mov eax, dword [esp + 0xc]
lea ecx, [eax - 1]
mov eax, dword [esp + 0x10]
mov esi, dword [eax]
mov eax, dword [esp + 0x1c]
mov ebp, dword [eax]
mov eax, dword [esp + 0x20]
test eax, eax
mov dword [esp + 8], ecx
je 0x5ad438
xor edi, edi
cmp eax, 8
jb 0x5ad3b2
mov eax, dword [esp + 0x14]
add eax, esi
cmp ebp, eax
mov edx, dword [esp]
jae 0x5ad357
mov eax, dword [esp + 0x34]
add eax, ebp
cmp esi, eax
jb 0x5ad3b2
xor edi, edi
mov eax, dword [esp + 0x38]
nop dword [eax]
movdqu xmm0, xmmword [esi + edi*4 + 0x10]
movdqu xmm1, xmmword [esi + edi*4]
movdqu xmm2, xmmword [esi + edi*4 + 4]
movdqu xmm3, xmmword [esi + edi*4 + 0x14]
psrld xmm1, 1
pslld xmm2, 0x1f
por xmm2, xmm1
psrld xmm0, 1
pslld xmm3, 0x1f
por xmm3, xmm0
movdqu xmmword [ebp + edi*4], xmm2
movdqu xmmword [ebp + edi*4 + 0x10], xmm3
add edi, 8
cmp eax, edi
jne 0x5ad360
mov edi, eax
cmp dword [esp + 0x20], eax
je 0x5ad4a8
mov eax, dword [esp + 0x3c]
sub eax, edi
test byte [esp + 0x44], 3
mov ecx, dword [esp + 0x40]
mov dword [esp + 4], eax
je 0x5ad444
nop word [eax + eax]
mov eax, dword [esi + edi*4]
mov edx, dword [esi + edi*4 + 4]
shld edx, eax, 0x1f
lea ebx, [edi + 1]
mov dword [ebp + edi*4], edx
mov edi, ebx
dec ecx
jne 0x5ad3d0
jmp 0x5ad446
or esi, ecx
mov ecx, dword [esp + 8]
mov dword [ecx + edi*4], esi
mov eax, dword [edx + edi*4 + 4]
and eax, ebp
or eax, ebx
mov dword [ecx + edi*4 + 4], eax
add edi, 2
cmp dword [esp], edi
mov esi, ebp
mov ebp, edx
je 0x5ad316
mov ecx, dword [ebp + edi*4]
and ecx, esi
mov edx, ebp
mov ebp, esi
mov eax, dword [esp + 4]
mov esi, eax
mov ebx, eax
test eax, eax
je 0x5ad3f0
mov eax, dword [esp + 8]
mov esi, dword [eax + edi*4]
mov ebx, dword [eax + edi*4 + 4]
jmp 0x5ad3f0
mov eax, dword [esi]
shr eax, 1
mov dword [ebp], eax
mov edx, dword [esp]
jmp 0x5ad4b6
mov ebx, edi
cmp dword [esp + 4], 3
mov edx, dword [esp]
mov edi, dword [esp + 0x20]
jb 0x5ad4a8
nop word cs:[eax + eax]
mov eax, dword [esi + ebx*4]
mov ecx, dword [esi + ebx*4 + 4]
shld ecx, eax, 0x1f
mov dword [ebp + ebx*4], ecx
mov eax, dword [esi + ebx*4 + 4]
mov ecx, dword [esi + ebx*4 + 8]
shld ecx, eax, 0x1f
mov dword [ebp + ebx*4 + 4], ecx
mov eax, dword [esi + ebx*4 + 8]
mov ecx, dword [esi + ebx*4 + 0xc]
shld ecx, eax, 0x1f
mov dword [ebp + ebx*4 + 8], ecx
mov eax, dword [esi + ebx*4 + 0xc]
mov ecx, dword [esi + ebx*4 + 0x10]
shld ecx, eax, 0x1f
mov dword [ebp + ebx*4 + 0xc], ecx
lea eax, [ebx + 4]
mov ebx, eax
cmp edi, eax
jne 0x5ad460
mov eax, dword [esi + edx*4 - 4]
shr eax, 1
mov dword [ebp + edx*4 - 4], eax
mov ecx, dword [esp + 8]
and dword [esp + 0x24], ecx
xor edi, edi
cmp edx, 8
mov dword [esp + 4], esi
jb 0x5ad560
mov eax, dword [esp + 0x14]
add eax, ebp
cmp esi, eax
jae 0x5ad4e1
mov eax, dword [esp + 0x14]
mov esi, dword [esp + 4]
add eax, esi
cmp ebp, eax
jb 0x5ad560
movd xmm0, ecx
pshufd xmm0, xmm0, 0
xor edi, edi
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 4]
jmp 0x5ad52e
movdqu xmm3, xmmword [ebp + edi*4]
movdqu xmm4, xmmword [ebp + edi*4 + 0x10]
pand xmm3, xmm0
por xmm3, xmm2
pand xmm4, xmm0
por xmm4, xmm1
movdqu xmmword [esi + edi*4], xmm3
movdqu xmmword [esi + edi*4 + 0x10], xmm4
add edi, 8
cmp eax, edi
je 0x5ad54a
pxor xmm2, xmm2
pxor xmm1, xmm1
cmp dword [esp + 0xc], 0
je 0x5ad500
movdqu xmm2, xmmword [esi + edi*4]
movdqu xmm1, xmmword [esi + edi*4 + 0x10]
jmp 0x5ad500
mov edi, eax
cmp edx, eax
je 0x5ace40
nop word cs:[eax + eax]
mov ebx, edi
or ebx, 1
test dl, 1
je 0x5ad58c
mov esi, dword [ebp + edi*4]
and esi, ecx
mov ecx, dword [esp + 0xc]
mov eax, ecx
test ecx, ecx
mov ecx, dword [esp + 4]
je 0x5ad581
mov eax, dword [ecx + edi*4]
or eax, esi
mov dword [ecx + edi*4], eax
mov edi, ebx
mov ecx, dword [esp + 8]
cmp edx, ebx
je 0x5ace40
mov esi, ebp
jmp 0x5ad5c5
or edx, ecx
mov ecx, dword [esp + 4]
mov dword [ecx + edi*4], edx
mov eax, dword [esi + edi*4 + 4]
and eax, ebp
or eax, ebx
mov dword [ecx + edi*4 + 4], eax
add edi, 2
mov edx, dword [esp]
cmp edx, edi
mov ecx, ebp
je 0x5ace40
mov ebp, ecx
mov ecx, dword [esi + edi*4]
and ecx, ebp
mov eax, dword [esp + 0xc]
mov edx, eax
mov ebx, eax
test eax, eax
je 0x5ad5a0
mov eax, dword [esp + 4]
mov edx, dword [eax + edi*4]
mov ebx, dword [eax + edi*4 + 4]
jmp 0x5ad5a0
mov dword [esp + 0x30], eax
mov eax, 1
cmp edx, 2
cmovae eax, edx
mov edi, dword [esp + 0x10]
mov ebx, 0
jb 0x5ad62b
mov ecx, eax
and ecx, 0xfffffffe
xor ebx, ebx
mov edx, dword [esi]
mov edx, dword [edx + ebx*4]
mov esi, dword [edi]
or dword [esi + ebx*4], edx
mov edx, dword [esp + 0x18]
mov edx, dword [edx]
mov edx, dword [edx + ebx*4 + 4]
mov esi, dword [edi]
or dword [esi + ebx*4 + 4], edx
mov esi, dword [esp + 0x18]
add ebx, 2
cmp ecx, ebx
jne 0x5ad606
test al, 1
mov edi, dword [esp + 0x50]
je 0x5ad641
mov eax, dword [esi]
mov eax, dword [eax + ebx*4]
mov ecx, dword [esp + 0x10]
mov ecx, dword [ecx]
or dword [ecx + ebx*4], eax
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
mov dword [eax], ecx
mov eax, dword [esp + 0x10]
mov esi, dword [eax]
mov ebx, dword [esp]
push ebx
push edi
call fcn.0059f5c0
add esp, 8
test eax, eax
je 0x5acd7c
lea eax, [ebx*4]
test eax, eax
je 0x5ad681
push eax
push esi
push dword [edi]
call sub.api_ms_win_crt_private_l1_1_0.dll_memmove
mov ebx, dword [esp + 0xc]
add esp, 0xc
mov dword [edi + 4], ebx
mov dword [edi + 0xc], 0
mov ebp, 1
jmp 0x5acd7e