Function at 0x10022f80
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x3c
call fcn.100a1060
push ebx
push ebp
mov ebp, dword [esp + 0x48]
test ebp, ebp
push esi
mov esi, dword [esp + 0x50]
push edi
je 0x10022fb0
test esi, esi
je 0x10022fb0
mov eax, dword [esp + 0x5c]
test eax, eax
mov edi, dword [esp + 0x64]
je 0x10022fb4
test edi, edi
jne 0x10022fcb
jmp 0x10022fb4
mov edi, dword [esp + 0x64]
push str.in__out__key__ivec
push 0xe3
push str..crypto_aes_aes_ige.c
call sym.LIBEAY32.dll_OpenSSLDie
add esp, 0xc
mov eax, dword [esp + 0x68]
cmp eax, 1
je 0x10022fef
test eax, eax
je 0x10022fef
push str._AES_ENCRYPT__enc__AES_DECRYPT__enc_
push 0xe4
push str..crypto_aes_aes_ige.c
call sym.LIBEAY32.dll_OpenSSLDie
add esp, 0xc
mov ebx, dword [esp + 0x58]
test bl, 0xf
je 0x1002300f
push str._length_AES_BLOCK_SIZE___0
push 0xe5
push str..crypto_aes_aes_ige.c
call sym.LIBEAY32.dll_OpenSSLDie
add esp, 0xc
cmp dword [esp + 0x68], 1
jne 0x100231f8
cmp ebx, 0x10
lea eax, [edi + 0x10]
mov edx, edi
mov dword [esp + 0x68], eax
jb 0x10023113
shr ebx, 4
mov dword [esp + 0x10], ebx
mov ebx, edx
sub ebx, ebp
mov dword [esp + 0x14], ebx
mov ebx, esi
lea edi, [edx + 3]
sub ebx, ebp
sub edx, esi
lea ecx, [esi + 1]
mov eax, ebp
mov dword [esp + 0x18], edx
mov dword [esp + 0x50], 4
mov edx, dword [esp + 0x14]
mov dl, byte [edx + eax]
xor dl, byte [eax]
add eax, 4
mov byte [ebx + eax - 4], dl
mov edx, dword [esp + 0x18]
mov dl, byte [edx + ecx]
xor dl, byte [eax - 3]
add ecx, 4
mov byte [ecx - 4], dl
mov dl, byte [eax - 2]
xor dl, byte [edi - 1]
add edi, 4
mov byte [ecx - 3], dl
mov dl, byte [eax - 1]
xor dl, byte [edi - 4]
mov byte [ecx - 2], dl
dec dword [esp + 0x50]
jne 0x10023055
mov eax, dword [esp + 0x5c]
push eax
push esi
push esi
call sym.LIBEAY32.dll_AES_encrypt
mov edi, dword [esp + 0x74]
add esp, 0xc
lea ecx, [edi + 2]
mov eax, esi
sub edi, esi
mov edx, 4
nop
mov bl, byte [edi + eax]
xor byte [eax], bl
mov bl, byte [ecx - 1]
xor byte [eax + 1], bl
mov bl, byte [ecx]
xor byte [eax + 2], bl
mov bl, byte [ecx + 1]
xor byte [eax + 3], bl
add eax, 4
add ecx, 4
dec edx
jne 0x100230b0
mov ecx, ebp
mov eax, dword [ecx]
mov dword [esp + 0x2c], eax
mov eax, dword [ecx + 4]
mov dword [esp + 0x30], eax
mov eax, dword [ecx + 8]
mov ecx, dword [ecx + 0xc]
mov dword [esp + 0x34], eax
lea eax, [esp + 0x2c]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x10]
mov edx, esi
add ebp, 0x10
add esi, 0x10
dec eax
mov dword [esp + 0x38], ecx
mov dword [esp + 0x10], eax
jne 0x10023033
mov ebx, dword [esp + 0x58]
mov edi, dword [esp + 0x64]
lea ebp, [edi + 0x20]
add edi, 0x30
cmp ebx, 0x10
mov dword [esp + 0x68], edi
jb 0x10023407
shr ebx, 4
lea esp, [esp]
sub esi, 0x10
mov ecx, esi
mov edx, dword [ecx]
mov eax, dword [ecx + 4]
mov dword [esp + 0x1c], edx
mov edx, dword [ecx + 8]
mov dword [esp + 0x20], eax
mov eax, dword [ecx + 0xc]
mov dword [esp + 0x28], eax
lea ecx, [ebp + 2]
mov dword [esp + 0x24], edx
mov eax, esi
sub ebp, esi
mov edi, 4
lea esp, [esp]
mov dl, byte [eax + ebp]
xor byte [eax], dl
mov dl, byte [ecx - 1]
xor byte [eax + 1], dl
mov dl, byte [ecx]
xor byte [eax + 2], dl
mov dl, byte [ecx + 1]
xor byte [eax + 3], dl
add eax, 4
add ecx, 4
dec edi
jne 0x10023160
mov eax, dword [esp + 0x5c]
push eax
push esi
push esi
call sym.LIBEAY32.dll_AES_encrypt
mov edi, dword [esp + 0x74]
add esp, 0xc
lea ecx, [edi + 2]
mov eax, esi
sub edi, esi
mov ebp, 4
mov edi, edi
mov dl, byte [eax + edi]
xor byte [eax], dl
mov dl, byte [ecx - 1]
xor byte [eax + 1], dl
mov dl, byte [ecx]
xor byte [eax + 2], dl
mov dl, byte [ecx + 1]
xor byte [eax + 3], dl
add eax, 4
add ecx, 4
dec ebp
jne 0x100231a0
dec ebx
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x30], ecx
lea ecx, [esp + 0x2c]
mov ebp, esi
mov dword [esp + 0x34], edx
mov dword [esp + 0x38], eax
mov dword [esp + 0x68], ecx
jne 0x10023130
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret
lea edx, [edi + 0x20]
add edi, 0x30
add ebp, ebx
add esi, ebx
cmp ebx, 0x10
mov dword [esp + 0x68], edx
jb 0x1002330c
shr ebx, 4
mov dword [esp + 0x50], ebx
sub ebp, 0x10
mov eax, ebp
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov dword [esp + 0x1c], ecx
mov ecx, dword [eax + 8]
mov dword [esp + 0x20], edx
mov edx, dword [eax + 0xc]
mov dword [esp + 0x24], ecx
mov ecx, dword [eax]
mov dword [esp + 0x28], edx
mov edx, dword [eax + 4]
mov dword [esp + 0x2c], ecx
mov ecx, dword [eax + 8]
mov dword [esp + 0x30], edx
mov edx, dword [eax + 0xc]
mov dword [esp + 0x38], edx
mov dword [esp + 0x34], ecx
mov edx, edi
lea eax, [esp + 0x1c]
sub esi, 0x10
xor ecx, ecx
sub edx, eax
mov edi, edi
lea eax, [esp + ecx + 0x1c]
mov bl, byte [edx + eax]
xor byte [eax], bl
mov bl, byte [edi + ecx + 1]
xor byte [eax + 1], bl
mov bl, byte [edi + ecx + 2]
xor byte [eax + 2], bl
mov bl, byte [edi + ecx + 3]
xor byte [eax + 3], bl
add ecx, 4
cmp ecx, 0x10
jb 0x10023260
mov ecx, dword [esp + 0x5c]
push ecx
lea edx, [esp + 0x20]
push esi
push edx
call sym.LIBEAY32.dll_AES_decrypt
mov edi, dword [esp + 0x74]
add esp, 0xc
lea ecx, [edi + 2]
mov eax, esi
sub edi, esi
mov edx, 4
lea esp, [esp]
mov bl, byte [eax + edi]
xor byte [eax], bl
mov bl, byte [ecx - 1]
xor byte [eax + 1], bl
mov bl, byte [ecx]
xor byte [eax + 2], bl
mov bl, byte [ecx + 1]
xor byte [eax + 3], bl
add eax, 4
add ecx, 4
dec edx
jne 0x100232b0
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x34]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x40], ecx
lea ecx, [esp + 0x3c]
dec eax
mov dword [esp + 0x44], edx
mov dword [esp + 0x68], ecx
mov edi, esi
mov dword [esp + 0x50], eax
jne 0x10023216
mov ebx, dword [esp + 0x58]
mov edi, dword [esp + 0x64]
mov dword [esp + 0x68], edi
add edi, 0x10
cmp ebx, 0x10
jb 0x10023407
shr ebx, 4
mov dword [esp + 0x58], ebx
mov edx, esi
mov eax, dword [edx]
mov ecx, dword [edx + 4]
mov dword [esp + 0x1c], eax
mov eax, dword [edx + 8]
mov dword [esp + 0x20], ecx
mov ecx, dword [edx + 0xc]
mov ebx, dword [edx]
mov dword [esp + 0x24], eax
mov eax, dword [edx + 4]
mov dword [esp + 0x28], ecx
mov ecx, dword [edx + 8]
mov edx, dword [edx + 0xc]
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], ecx
mov ebp, edi
lea eax, [esp + 0x1c]
xor ecx, ecx
mov dword [esp + 0x38], edx
sub ebp, eax
lea eax, [esp + ecx + 0x1c]
mov dl, byte [eax + ebp]
xor byte [eax], dl
mov dl, byte [edi + ecx + 1]
xor byte [eax + 1], dl
mov dl, byte [edi + ecx + 2]
xor byte [eax + 2], dl
mov dl, byte [edi + ecx + 3]
xor byte [eax + 3], dl
add ecx, 4
cmp ecx, 0x10
jb 0x10023365
mov eax, dword [esp + 0x5c]
push eax
lea ecx, [esp + 0x20]
push esi
push ecx
call sym.LIBEAY32.dll_AES_decrypt
mov edi, dword [esp + 0x74]
add esp, 0xc
lea ecx, [edi + 2]
mov eax, esi
sub edi, esi
mov ebp, 4
mov edi, edi
mov dl, byte [edi + eax]
xor byte [eax], dl
mov dl, byte [ecx - 1]
xor byte [eax + 1], dl
mov dl, byte [ecx]
xor byte [eax + 2], dl
mov dl, byte [ecx + 1]
xor byte [eax + 3], dl
add eax, 4
add ecx, 4
dec ebp
jne 0x100233b0
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x38]
mov dword [esp + 0x40], eax
lea eax, [esp + 0x3c]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x58]
mov edi, esi
add esi, 0x10
dec eax
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x44], ecx
mov dword [esp + 0x48], edx
mov dword [esp + 0x58], eax
jne 0x10023327
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret