Function at 0x4c0540
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0xac
mov ecx, dword [ebp + 0x14]
mov eax, dword [0x808040]
xor eax, ebp
mov dword [ebp - 0x10], eax
mov esi, dword [ecx + 4]
test esi, esi
jle 0x4c0a86
mov eax, ecx
mov edx, dword [ecx]
mov ecx, dword [edx]
mov dword [ebp - 0x9c], ecx
test cl, 1
je 0x4c0a86
cmp dword [eax + 0xc], 0
jne 0x4c0a78
mov eax, dword [ebp + 0xc]
cmp dword [eax + 0xc], 0
jne 0x4c0a94
mov ebx, dword [eax]
mov eax, dword [eax + 4]
cmp eax, esi
mov dword [ebp - 0x94], esi
mov ecx, esi
cmovb ecx, eax
mov dword [ebp - 0xa0], eax
test eax, eax
mov dword [ebp - 0xa8], edx
je 0x4c09cb
xor esi, esi
xor eax, eax
mov dword [ebp - 0x98], ebx
mov dword [ebp - 0xa4], ecx
mov ecx, dword [edx + eax*4]
mov edx, dword [ebx + eax*4]
mov ebx, edx
xor ebx, ecx
mov edi, edx
sub edi, ecx
lea ecx, [ebx - 1]
xor edi, edx
or edi, ebx
not ebx
and ecx, ebx
mov ebx, dword [ebp - 0x98]
xor edi, edx
mov edx, dword [ebp - 0xa8]
sar ecx, 0x1f
sar edi, 0x1f
or edi, 1
xor esi, edi
and esi, ecx
mov ecx, dword [ebp - 0xa4]
xor esi, edi
inc eax
cmp ecx, eax
jne 0x4c05c6
mov ecx, dword [ebp - 0x94]
mov edi, dword [ebp - 0xa0]
cmp edi, ecx
jb 0x4c09ae
ja 0x4c09dc
test esi, esi
jns 0x4c0a94
mov ecx, dword [ebp + 0x10]
mov eax, dword [ecx + 4]
test eax, eax
jle 0x4c0ab3
mov ecx, dword [ecx]
cmp dword [ecx + eax*4 - 4], 0
je 0x4c07f3
lea esi, [eax - 1]
shl esi, 5
mov eax, dword [ecx + eax*4 - 4]
xor ebx, ebx
test eax, eax
setne bl
mov ecx, eax
shr ecx, 0x10
cmp eax, 0x10000
cmovb ecx, eax
mov eax, 0
setae al
shl eax, 4
mov dword [ebp - 0x98], eax
mov eax, ecx
shr eax, 8
xor edx, edx
cmp ecx, 0x100
cmovb eax, ecx
setae dl
mov dword [ebp - 0xa4], edx
mov edi, eax
shr edi, 4
xor ecx, ecx
cmp eax, 0x10
cmovb edi, eax
setae cl
mov dword [ebp - 0xa0], ecx
mov eax, edi
shr eax, 2
xor edx, edx
cmp edi, 4
cmovb eax, edi
setae dl
xor ecx, ecx
cmp eax, 2
setae cl
or ebx, esi
add ebx, dword [ebp - 0x98]
mov eax, dword [ebp - 0xa4]
lea eax, [ebx + eax*8]
mov esi, dword [ebp - 0xa0]
lea eax, [eax + esi*4]
lea ebx, [eax + edx*2]
add ebx, ecx
je 0x4c0a01
mov esi, dword [ebp + 0x18]
pcmpeqd xmm0, xmm0
movdqu xmmword [ebp - 0x20], xmm0
movdqu xmmword [ebp - 0x2c], xmm0
movdqu xmmword [ebp - 0x3c], xmm0
movdqu xmmword [ebp - 0x4c], xmm0
movdqu xmmword [ebp - 0x5c], xmm0
movdqu xmmword [ebp - 0x6c], xmm0
movdqu xmmword [ebp - 0x7c], xmm0
movdqu xmmword [ebp - 0x8c], xmm0
cmp byte [esi + 0x14], 0
jne 0x4c0733
mov ecx, dword [esi + 8]
mov edx, esi
mov esi, dword [esi + 0x10]
cmp ecx, dword [edx + 0xc]
je 0x4c095c
mov eax, dword [edx + 4]
mov dword [eax + ecx*4], esi
inc dword [edx + 8]
mov esi, edx
push esi
call fcn.004c0270
add esp, 4
mov edi, eax
push esi
call fcn.004c0270
add esp, 4
mov dword [ebp - 0x90], eax
xor ecx, ecx
test edi, edi
je 0x4c0bd3
mov edx, eax
mov eax, 0
test edx, edx
je 0x4c0921
mov ecx, dword [ebp + 0x1c]
xor eax, eax
mov dword [ebp - 0xa8], ecx
test ecx, ecx
je 0x4c0bab
cmp ebx, 0x29f
mov dword [ebp - 0x9c], eax
ja 0x4c0ac0
cmp ebx, 0xef
ja 0x4c0acf
cmp ebx, 0x4f
ja 0x4c0ade
xor eax, eax
cmp ebx, 0x18
setae al
lea eax, [eax*2 + 1]
mov dword [ebp - 0xa4], eax
push esi
mov eax, dword [ebp - 0xa8]
push eax
push eax
push dword [ebp + 0xc]
mov esi, edx
push edx
call fcn.004c0ce0
add esp, 0x14
xor ecx, ecx
test eax, eax
je 0x4c09d4
cmp dword [ebp - 0xa4], 2
jae 0x4c0aed
dec ebx
mov dword [ebp - 0x98], 0
lea esi, [ebx - 1]
jmp 0x4c0835
lea edx, [eax - 1]
cmp eax, 1
mov eax, edx
jg 0x4c0639
jmp 0x4c0a01
test byte [ebp - 0x98], 1
je 0x4c082b
push dword [ebp + 0x18]
push dword [ebp - 0xa8]
push edi
push edi
push edi
call fcn.004c0ce0
add esp, 0x14
test eax, eax
je 0x4c09d2
sub ebx, 1
jb 0x4c0903
dec esi
test ebx, ebx
js 0x4c0806
mov eax, dword [ebp + 0x10]
mov eax, dword [eax + 4]
mov ecx, ebx
shr ecx, 5
cmp ecx, eax
jae 0x4c0806
mov edx, dword [ebp + 0x10]
mov edx, dword [edx]
mov ecx, dword [edx + ecx*4]
bt ecx, ebx
jae 0x4c0806
cmp dword [ebp - 0xa4], 2
jb 0x4c0866
test ebx, ebx
jne 0x4c0bda
xor esi, esi
xor eax, eax
inc eax
test byte [ebp - 0x98], 1
jne 0x4c08a4
and eax, 0xfffffffe
push dword [ebp + eax*2 - 0x90]
push edi
call fcn.004c00c0
add esp, 8
test eax, eax
je 0x4c09d2
cmp ebx, esi
je 0x4c0903
not esi
add ebx, esi
mov al, 1
mov dword [ebp - 0x98], eax
jmp 0x4c07ee
mov dword [ebp - 0x94], esi
xor esi, esi
dec esi
mov dword [ebp - 0xa0], eax
push dword [ebp + 0x18]
push dword [ebp - 0xa8]
push edi
push edi
push edi
call fcn.004c0ce0
add esp, 0x14
test eax, eax
je 0x4c09d2
inc esi
cmp dword [ebp - 0x94], esi
mov eax, dword [ebp - 0xa0]
jne 0x4c08b3
mov esi, dword [ebp - 0x94]
and eax, 0xfffffffe
push dword [ebp + 0x18]
push dword [ebp - 0xa8]
push dword [ebp + eax*2 - 0x90]
push edi
push edi
call fcn.004c0ce0
add esp, 0x14
jmp 0x4c0887
mov esi, dword [ebp + 0x18]
push esi
push dword [ebp - 0xa8]
push edi
push dword [ebp + 8]
call fcn.004c0e80
add esp, 0x10
mov ecx, eax
mov eax, dword [ebp - 0x9c]
mov edi, ecx
push eax
call fcn.004c1080
add esp, 4
cmp byte [esi + 0x14], 0
jne 0x4c0945
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 ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.005c6b46
mov eax, edi
add esp, 0xac
pop esi
pop edi
pop ebx
pop ebp
ret
lea eax, [ecx + ecx*2]
shr eax, 1
test ecx, ecx
mov edi, 0x20
cmovne edi, eax
cmp edi, ecx
jbe 0x4c0b9d
cmp edi, 0x3fffffff
ja 0x4c0b9d
lea eax, [edi*4]
push eax
mov eax, dword [ebp + 0x18]
push dword [eax + 4]
call fcn.00564700
add esp, 8
test eax, eax
je 0x4c0b9d
mov edx, dword [ebp + 0x18]
mov dword [edx + 4], eax
mov dword [edx + 0xc], edi
mov ecx, dword [edx + 8]
jmp 0x4c072b
xor eax, eax
or eax, dword [edx + edi*4]
inc edi
cmp ecx, edi
jne 0x4c09b0
mov ecx, eax
not ecx
dec eax
and eax, ecx
sar eax, 0x1f
not eax
or esi, eax
jmp 0x4c0621
xor esi, esi
jmp 0x4c0607
xor ecx, ecx
mov esi, dword [ebp + 0x18]
jmp 0x4c091b
xor eax, eax
or eax, dword [ebx + ecx*4]
inc ecx
cmp dword [ebp - 0xa0], ecx
jne 0x4c09de
mov ecx, eax
not ecx
dec eax
and eax, ecx
sar eax, 0x1f
xor esi, 1
and esi, eax
xor esi, 1
jmp 0x4c0621
mov edx, dword [ebp - 0x9c]
and edx, 0xfffffffe
cmp dword [ebp - 0x94], 1
je 0x4c0a35
mov ecx, dword [ebp - 0x94]
cmp ecx, 3
mov eax, 2
cmovge eax, ecx
xor ecx, ecx
inc ecx
mov esi, dword [ebp - 0xa8]
or edx, dword [esi + ecx*4]
inc ecx
cmp eax, ecx
jne 0x4c0a2d
test edx, edx
je 0x4c0a65
push 1
push dword [ebp + 8]
call fcn.00647080
add esp, 8
test eax, eax
je 0x4c0aac
mov ecx, dword [ebp + 8]
mov dword [ecx + 0xc], 0
mov eax, dword [ecx]
xor edx, edx
inc edx
mov dword [eax], edx
mov edi, edx
mov dword [ecx + 4], edx
jmp 0x4c0945
xor eax, eax
mov ecx, dword [ebp + 8]
mov dword [ecx + 0xc], eax
mov dword [ecx + 4], eax
xor edi, edi
inc edi
jmp 0x4c0945
push 0x27e
push str....._third_party_boringssl_srccrypto_fipsmodule_bnexponentiation.c
push 0x6d
jmp 0x4c0aa0
push 0x27a
push str....._third_party_boringssl_srccrypto_fipsmodule_bnexponentiation.c
push 0x68
jmp 0x4c0aa0
push 0x283
push str....._third_party_boringssl_srccrypto_fipsmodule_bnexponentiation.c
push 0x6b
push 0
push 3
call fcn.006baa70
add esp, 0x14
xor edi, edi
jmp 0x4c0945
je 0x4c0a01
mov ecx, dword [ecx]
jmp 0x4c0644
mov dword [ebp - 0xa4], 6
jmp 0x4c07b5
mov dword [ebp - 0xa4], 5
jmp 0x4c07b5
mov dword [ebp - 0xa4], 4
jmp 0x4c07b5
mov dword [ebp - 0xb0], edi
push dword [ebp + 0x18]
call fcn.004c0270
add esp, 4
mov dword [ebp - 0x98], eax
test eax, eax
je 0x4c0b8d
push dword [ebp + 0x18]
push dword [ebp - 0xa8]
push esi
push esi
push dword [ebp - 0x98]
call fcn.004c0ce0
add esp, 0x14
test eax, eax
je 0x4c0b8d
mov eax, dword [ebp - 0xa4]
mov ecx, eax
dec cl
xor esi, esi
inc esi
mov eax, esi
shl eax, cl
mov dword [ebp - 0x94], eax
push dword [ebp + 0x18]
call fcn.004c0270
add esp, 4
mov dword [ebp + esi*4 - 0x90], eax
test eax, eax
je 0x4c0b8d
push dword [ebp + 0x18]
push dword [ebp - 0xa8]
push dword [ebp - 0x98]
push dword [ebp + esi*4 - 0x94]
push eax
call fcn.004c0ce0
add esp, 0x14
test eax, eax
je 0x4c0b8d
inc esi
cmp dword [ebp - 0x94], esi
mov edi, dword [ebp - 0xb0]
jne 0x4c0b40
jmp 0x4c07e3
mov esi, dword [ebp + 0x18]
mov eax, dword [ebp - 0x9c]
xor ecx, ecx
jmp 0x4c0921
mov esi, dword [ebp + 0x18]
mov word [esi + 0x14], 0x101
jmp 0x4c0733
push esi
push dword [ebp + 0x14]
mov dword [ebp - 0x98], edx
call fcn.006484c0
mov edx, dword [ebp - 0x98]
add esp, 8
mov dword [ebp - 0xa8], eax
test eax, eax
jne 0x4c0779
xor ecx, ecx
xor eax, eax
jmp 0x4c0921
mov dword [ebp - 0xb0], edi
mov dword [ebp - 0x94], 0
xor ecx, ecx
inc ecx
mov dword [ebp - 0xac], ecx
mov dword [ebp - 0xa0], ecx
mov dword [ebp - 0xb4], 0
test esi, esi
js 0x4c0c2b
mov ecx, esi
shr ecx, 5
mov dword [ebp - 0xb4], 0
cmp ecx, eax
jae 0x4c0c2b
mov edi, dword [edx + ecx*4]
xor ecx, ecx
bt edi, esi
setb cl
mov dword [ebp - 0xb4], ecx
mov ecx, dword [ebp - 0xac]
sub ecx, dword [ebp - 0x94]
mov edi, dword [ebp - 0xa0]
mov dword [ebp - 0xb8], edi
shl dword [ebp - 0xb8], cl
or dword [ebp - 0xb8], 1
cmp dword [ebp - 0xb4], 0
mov ecx, dword [ebp - 0xa0]
cmovne ecx, dword [ebp - 0xb8]
mov dword [ebp - 0xa0], ecx
mov edi, dword [ebp - 0xac]
mov ecx, dword [ebp - 0x94]
cmovne ecx, edi
mov dword [ebp - 0x94], ecx
lea ecx, [edi + 1]
cmp ecx, dword [ebp - 0xa4]
jae 0x4c0c9d
dec esi
cmp dword [ebp - 0xac], ebx
mov dword [ebp - 0xac], ecx
jl 0x4c0bf9
test byte [ebp - 0x98], 1
jne 0x4c0cbd
mov esi, dword [ebp - 0x94]
mov eax, dword [ebp - 0xa0]
mov edi, dword [ebp - 0xb0]
jmp 0x4c0874
mov esi, dword [ebp - 0x94]
test esi, esi
mov eax, dword [ebp - 0xa0]
mov edi, dword [ebp - 0xb0]
js 0x4c08e4
jmp 0x4c08a4