Function at 0x45a86a
Capabilities:
Encrypt data using aes

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x28
movzx eax, word [ebp + 8]
mov edi, edx
mov ebx, ecx
cmp eax, 0x80
mov dword [ebp - 0x10], eax
je 0x45a89b
cmp eax, 0xc0
je 0x45a89f
cmp eax, 0x100
jne 0x45ae2c
mov al, 0xe
jmp 0x45a8a1
mov al, 0xa
jmp 0x45a8a1
mov al, 0xc
mov esi, dword [ebp + 0xc]
mov byte [esi + 0xf0], al
push 4
pop eax
mov ecx, ebx
mov edx, edi
push 0x63c548
push eax
push 0
call fcn.0045b16c
add esp, 0xc
mov ecx, eax
call fcn.0045b1a2
mov dword [esi], eax
push 8
pop eax
mov ecx, ebx
mov edx, edi
push 0x63c558
push eax
push 4
pop eax
push eax
call fcn.0045b16c
add esp, 0xc
mov ecx, eax
call fcn.0045b1a2
mov dword [esi + 4], eax
push 0xc
pop eax
mov ecx, ebx
mov edx, edi
push 0x63c568
push eax
push 8
pop eax
push eax
call fcn.0045b16c
add esp, 0xc
mov ecx, eax
call fcn.0045b1a2
mov dword [esi + 8], eax
mov ecx, ebx
mov edx, edi
push 0x63c578
push 0x10
push 0xc
pop eax
push eax
call fcn.0045b16c
add esp, 0xc
mov ecx, eax
call fcn.0045b1a2
mov dword [esi + 0xc], eax
mov eax, dword [ebp - 0x10]
cmp ax, 0x80
jne 0x45aa0c
push 0x3c
pop edx
push 0xffffffffffffffdc
pop ebx
cmp edx, 3
jbe 0x45acf7
cmp edx, 4
je 0x45ad04
mov edi, dword [esi + 0xc]
mov eax, 0xff
mov dword [ebp - 0x10], ebx
mov ecx, edi
shr ecx, 8
and ecx, eax
mov eax, edi
movzx ebx, byte [ecx*4 + 0x63c99a]
mov ecx, 0xff
and eax, ecx
mov ecx, esi
mov esi, edi
movzx eax, byte [eax*4 + str.cc]
shr esi, 0x18
movzx esi, byte [esi*4 + 0x63d198]
shl ebx, 0x10
shl eax, 8
xor eax, ebx
xor esi, eax
mov eax, edi
shr eax, 0xe
and eax, 0x3fc
movzx eax, byte [eax + 0x63c59b]
shl eax, 0x18
xor eax, dword [ecx]
xor esi, eax
mov eax, dword [ebp - 0x10]
xor esi, dword [eax + 0x63d5bc]
cmp edx, 5
mov dword [ecx + 0x10], esi
jbe 0x45ad13
xor esi, dword [ecx + 4]
cmp edx, 6
mov dword [ecx + 0x14], esi
je 0x45ad22
xor esi, dword [ecx + 8]
cmp edx, 7
mov dword [ecx + 0x18], esi
jbe 0x45ad31
xor esi, edi
mov ebx, eax
test eax, eax
mov dword [ecx + 0x1c], esi
je 0x45acef
push 0x63d600
push 4
call fcn.004992d2
pop ecx
pop ecx
mov esi, eax
add ebx, 4
jmp 0x45a944
mov ecx, ebx
mov edx, edi
push 0x63d610
push 0x14
pop eax
push eax
push 0x10
call fcn.0045b16c
add esp, 0xc
mov ecx, eax
call fcn.0045b1a2
mov dword [esi + 0x10], eax
mov ecx, ebx
mov edx, edi
push 0x63d620
push 0x18
push 0x14
pop eax
push eax
call fcn.0045b16c
add esp, 0xc
mov ecx, eax
call fcn.0045b1a2
mov ecx, dword [ebp - 0x10]
mov dword [esi + 0x14], eax
cmp cx, 0xc0
jne 0x45ab48
push 0x3c
pop edx
push 0xffffffffffffffe4
pop ebx
cmp edx, 5
jbe 0x45ad40
cmp edx, 6
je 0x45ad4d
mov edi, dword [esi + 0x14]
mov eax, 0xff
mov dword [ebp - 0x10], ebx
mov ecx, edi
shr ecx, 8
and ecx, eax
mov eax, edi
movzx ebx, byte [ecx*4 + 0x63c99a]
mov ecx, esi
mov esi, 0xff
and eax, esi
mov esi, edi
movzx eax, byte [eax*4 + str.cc]
shr esi, 0x18
movzx esi, byte [esi*4 + 0x63d198]
shl ebx, 0x10
shl eax, 8
xor eax, ebx
xor esi, eax
mov eax, edi
shr eax, 0xe
and eax, 0x3fc
movzx eax, byte [eax + 0x63c59b]
shl eax, 0x18
xor eax, dword [ecx]
xor esi, eax
mov eax, dword [ebp - 0x10]
xor esi, dword [eax + 0x63d5b4]
cmp edx, 7
mov dword [ecx + 0x18], esi
je 0x45ad5c
xor esi, dword [ecx + 4]
cmp edx, 8
mov dword [ecx + 0x1c], esi
jbe 0x45ad6b
xor esi, dword [ecx + 8]
cmp edx, 9
mov dword [ecx + 0x20], esi
je 0x45ad7a
xor esi, dword [ecx + 0xc]
mov ebx, eax
test eax, eax
mov dword [ecx + 0x24], esi
je 0x45acef
cmp edx, 0xb
jb 0x45ad89
xor esi, dword [ecx + 0x10]
cmp edx, 0xb
mov dword [ecx + 0x28], esi
je 0x45ad98
xor esi, edi
mov dword [ecx + 0x2c], esi
push 0x63d6a0
push 6
call fcn.004992d2
pop ecx
pop ecx
mov esi, eax
add ebx, 4
jmp 0x45aa62
push 0x1c
pop eax
mov ecx, ebx
mov edx, edi
push 0x63d6b0
push eax
push 0x18
call fcn.0045b16c
add esp, 0xc
mov ecx, eax
call fcn.0045b1a2
mov dword [esi + 0x18], eax
mov ecx, ebx
mov edx, edi
push 0x63d6c0
push 0x20
push 0x1c
pop eax
push eax
call fcn.0045b16c
add esp, 0xc
mov ecx, eax
call fcn.0045b1a2
cmp word [ebp - 0x10], 0x100
mov dword [esi + 0x1c], eax
jne 0x45acef
push 0x3c
pop edx
push 0xffffffffffffffe8
pop eax
mov dword [ebp - 0x10], eax
cmp edx, 7
jbe 0x45ada7
cmp edx, 8
je 0x45adb4
mov ebx, dword [esi + 0x1c]
mov edi, 0xff
mov ecx, ebx
mov eax, ebx
mov dword [ebp - 0x14], ebx
shr ecx, 8
and eax, edi
and ecx, edi
movzx eax, byte [eax*4 + str.cc]
movzx ecx, byte [ecx*4 + 0x63c99a]
shl eax, 8
shl ecx, 0x10
xor eax, ecx
mov ecx, ebx
shr ebx, 0xe
and ebx, 0x3fc
shr ecx, 0x18
movzx ebx, byte [ebx + 0x63c59b]
movzx edi, byte [ecx*4 + 0x63d198]
mov ecx, dword [ebp - 0x10]
shl ebx, 0x18
xor edi, eax
xor ebx, dword [esi]
xor edi, ebx
xor edi, dword [ecx + 0x63d5b0]
cmp edx, 9
mov dword [esi + 0x20], edi
je 0x45adc3
xor edi, dword [esi + 4]
cmp edx, 0xa
mov dword [esi + 0x24], edi
jbe 0x45add2
xor edi, dword [esi + 8]
cmp edx, 0xb
mov dword [esi + 0x28], edi
je 0x45ade1
xor edi, dword [esi + 0xc]
cmp dword [ebp - 0x10], 0
mov dword [esi + 0x2c], edi
je 0x45acef
cmp edx, 0xd
jb 0x45adf0
mov eax, edi
mov ecx, edi
mov ebx, 0xff
shr eax, 0xe
shr ecx, 8
and eax, 0x3fc
and ecx, ebx
movzx ebx, byte [ecx*4 + str.cc]
movzx eax, byte [eax + 0x63c99a]
mov ecx, 0xff
shl eax, 0x10
shl ebx, 8
xor ebx, eax
mov eax, edi
and edi, ecx
shr eax, 0x18
movzx ecx, byte [edi*4 + 0x63d198]
movzx eax, byte [eax*4 + 0x63c59b]
xor ecx, ebx
shl eax, 0x18
xor eax, dword [esi + 0x10]
xor ecx, eax
cmp edx, 0xd
mov dword [esi + 0x30], ecx
je 0x45adff
xor ecx, dword [esi + 0x14]
cmp edx, 0xe
mov dword [esi + 0x34], ecx
jbe 0x45ae0e
xor ecx, dword [esi + 0x18]
cmp edx, 0xf
mov dword [esi + 0x38], ecx
je 0x45ae1d
xor ecx, dword [ebp - 0x14]
mov dword [esi + 0x3c], ecx
mov ecx, esi
push 0x63d760
push 8
call fcn.004992d2
pop ecx
pop ecx
add dword [ebp - 0x10], 4
mov esi, eax
jmp 0x45ab9f
add esp, 0x28
pop esi
pop edi
pop ebx
pop ebp
ret
push 3
pop ecx
push 0x63c588
call fcn.0043a050
push 4
pop ecx
mov edx, ecx
push 0x63d5c0
call fcn.0043a050
push 5
pop ecx
mov edx, ecx
push 0x63d5d0
call fcn.0043a050
push 6
pop ecx
mov edx, ecx
push 0x63d5e0
call fcn.0043a050
push 7
pop ecx
mov edx, ecx
push 0x63d5f0
call fcn.0043a050
push 5
pop ecx
push 0x63d630
call fcn.0043a050
push 6
pop ecx
mov edx, ecx
push 0x63d640
call fcn.0043a050
push 7
pop ecx
mov edx, ecx
push 0x63d650
call fcn.0043a050
push 8
pop ecx
mov edx, ecx
push 0x63d660
call fcn.0043a050
push 9
pop ecx
mov edx, ecx
push 0x63d670
call fcn.0043a050
push 0xa
pop ecx
mov edx, ecx
push 0x63d680
call fcn.0043a050
push 0xb
pop ecx
mov edx, ecx
push 0x63d690
call fcn.0043a050
push 7
pop ecx
push 0x63d6d0
call fcn.0043a050
push 8
pop ecx
mov edx, ecx
push 0x63d6e0
call fcn.0043a050
push 9
pop ecx
mov edx, ecx
push 0x63d6f0
call fcn.0043a050
push 0xa
pop ecx
mov edx, ecx
push 0x63d700
call fcn.0043a050
push 0xb
pop ecx
mov edx, ecx
push 0x63d710
call fcn.0043a050
push 0xc
pop ecx
mov edx, ecx
push 0x63d720
call fcn.0043a050
push 0xd
pop ecx
mov edx, ecx
push 0x63d730
call fcn.0043a050
push 0xe
pop ecx
mov edx, ecx
push 0x63d740
call fcn.0043a050
push 0xf
pop ecx
mov edx, ecx
push 0x63d750
call fcn.0043a050
lea eax, [ebp + 8]
lea edx, [ebp - 0x1c]
lea ecx, [ebp - 0x34]
mov dword [edx], eax
xor eax, eax
mov dword [ecx], str.wrong_value_for_bits
mov dword [edx + 4], fcn.004407f0
inc eax
mov dword [ecx + 4], eax
and dword [ecx + 0x10], 0
mov dword [ecx + 8], edx
mov edx, 0x63d790
mov dword [ecx + 0xc], eax
call fcn.00439fc0