Function at 0x46dcb8
Capabilities:
Encrypt data using camellia

Disassembly:
push ebx
push esi
push edi
push ebp
add esp, 0xffffffa8
mov ebx, edx
mov esi, eax
lea edi, [esp + 0x18]
lea ebp, [esp + 0x38]
mov eax, esi
call fcn.004054f0
cmp eax, 0x10
je 0x46dcf6
mov eax, esi
call fcn.004054f0
cmp eax, 0x18
je 0x46dcf6
mov eax, esi
call fcn.004054f0
cmp eax, 0x20
je 0x46dcf6
xor eax, eax
jmp 0x46e530
xor eax, eax
mov al, byte [esi + 0xf]
xor edx, edx
mov dl, byte [esi + 0xe]
shl edx, 8
or eax, edx
xor edx, edx
mov dl, byte [esi + 0xd]
shl edx, 0x10
or eax, edx
xor edx, edx
mov dl, byte [esi + 0xc]
shl edx, 0x18
or eax, edx
mov dword [edi], eax
xor eax, eax
mov al, byte [esi + 0xb]
xor edx, edx
mov dl, byte [esi + 0xa]
shl edx, 8
or eax, edx
xor edx, edx
mov dl, byte [esi + 9]
shl edx, 0x10
or eax, edx
xor edx, edx
mov dl, byte [esi + 8]
shl edx, 0x18
or eax, edx
mov dword [edi + 4], eax
xor eax, eax
mov al, byte [esi + 7]
xor edx, edx
mov dl, byte [esi + 6]
shl edx, 8
or eax, edx
xor edx, edx
mov dl, byte [esi + 5]
shl edx, 0x10
or eax, edx
xor edx, edx
mov dl, byte [esi + 4]
shl edx, 0x18
or eax, edx
mov dword [edi + 8], eax
xor eax, eax
mov al, byte [esi + 3]
xor edx, edx
mov dl, byte [esi + 2]
shl edx, 8
or eax, edx
xor edx, edx
mov dl, byte [esi + 1]
shl edx, 0x10
or eax, edx
xor edx, edx
mov dl, byte [esi]
shl edx, 0x18
or eax, edx
mov dword [edi + 0xc], eax
mov eax, esi
call fcn.004054f0
cmp eax, 0x10
jne 0x46ddb5
xor eax, eax
mov dword [esp + 0x28], eax
xor eax, eax
mov dword [esp + 0x2c], eax
xor eax, eax
mov dword [esp + 0x30], eax
xor eax, eax
mov dword [esp + 0x34], eax
jmp 0x46ded4
mov eax, esi
call fcn.004054f0
cmp eax, 0x18
jne 0x46de28
xor eax, eax
mov al, byte [esi + 0x17]
xor edx, edx
mov dl, byte [esi + 0x16]
shl edx, 8
or eax, edx
xor edx, edx
mov dl, byte [esi + 0x15]
shl edx, 0x10
or eax, edx
xor edx, edx
mov dl, byte [esi + 0x14]
shl edx, 0x18
or eax, edx
mov dword [esp + 0x30], eax
xor eax, eax
mov al, byte [esi + 0x13]
xor edx, edx
mov dl, byte [esi + 0x12]
shl edx, 8
or eax, edx
xor edx, edx
mov dl, byte [esi + 0x11]
shl edx, 0x10
or eax, edx
xor edx, edx
mov dl, byte [esi + 0x10]
shl edx, 0x18
or eax, edx
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x30]
not eax
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x34]
not eax
mov dword [esp + 0x2c], eax
jmp 0x46ded4
mov eax, esi
call fcn.004054f0
cmp eax, 0x20
jne 0x46ded4
xor eax, eax
mov al, byte [esi + 0x1f]
xor edx, edx
mov dl, byte [esi + 0x1e]
shl edx, 8
or eax, edx
xor edx, edx
mov dl, byte [esi + 0x1d]
shl edx, 0x10
or eax, edx
xor edx, edx
mov dl, byte [esi + 0x1c]
shl edx, 0x18
or eax, edx
mov dword [esp + 0x28], eax
xor eax, eax
mov al, byte [esi + 0x1b]
xor edx, edx
mov dl, byte [esi + 0x1a]
shl edx, 8
or eax, edx
xor edx, edx
mov dl, byte [esi + 0x19]
shl edx, 0x10
or eax, edx
xor edx, edx
mov dl, byte [esi + 0x18]
shl edx, 0x18
or eax, edx
mov dword [esp + 0x2c], eax
xor eax, eax
mov al, byte [esi + 0x17]
xor edx, edx
mov dl, byte [esi + 0x16]
shl edx, 8
or eax, edx
xor edx, edx
mov dl, byte [esi + 0x15]
shl edx, 0x10
or eax, edx
xor edx, edx
mov dl, byte [esi + 0x14]
shl edx, 0x18
or eax, edx
mov dword [esp + 0x30], eax
xor eax, eax
mov al, byte [esi + 0x13]
xor edx, edx
mov dl, byte [esi + 0x12]
shl edx, 8
or eax, edx
xor edx, edx
mov dl, byte [esi + 0x11]
shl edx, 0x10
or eax, edx
xor edx, edx
mov dl, byte [esi + 0x10]
shl edx, 0x18
or eax, edx
mov dword [esp + 0x34], eax
mov eax, dword [edi + 8]
xor eax, dword [esp + 0x30]
mov dword [esp], eax
mov eax, dword [edi + 0xc]
xor eax, dword [esp + 0x34]
mov dword [esp + 4], eax
mov eax, dword [edi]
xor eax, dword [esp + 0x28]
mov dword [esp + 8], eax
mov eax, dword [edi + 4]
xor eax, dword [esp + 0x2c]
mov dword [esp + 0xc], eax
lea ecx, [esp + 0x10]
mov edx, 0x4f58b0
mov eax, esp
call fcn.0046d58c
mov eax, dword [esp + 0x10]
xor dword [esp + 8], eax
mov eax, dword [esp + 0x14]
xor dword [esp + 0xc], eax
lea ecx, [esp + 0x10]
mov edx, 0x4f58b8
lea eax, [esp + 8]
call fcn.0046d58c
mov eax, dword [esp + 0x10]
xor dword [esp], eax
mov eax, dword [esp + 0x14]
xor dword [esp + 4], eax
mov eax, dword [edi + 8]
xor dword [esp], eax
mov eax, dword [edi + 0xc]
xor dword [esp + 4], eax
mov eax, dword [edi]
xor dword [esp + 8], eax
mov eax, dword [edi + 4]
xor dword [esp + 0xc], eax
lea ecx, [esp + 0x10]
mov edx, 0x4f58c0
mov eax, esp
call fcn.0046d58c
mov eax, dword [esp + 0x10]
xor dword [esp + 8], eax
mov eax, dword [esp + 0x14]
xor dword [esp + 0xc], eax
lea ecx, [esp + 0x10]
mov edx, 0x4f58c8
lea eax, [esp + 8]
call fcn.0046d58c
mov eax, dword [esp + 0x10]
xor dword [esp], eax
mov eax, dword [esp + 0x14]
xor dword [esp + 4], eax
mov eax, dword [esp + 8]
mov dword [ebp], eax
mov eax, dword [esp + 0xc]
mov dword [ebp + 4], eax
mov eax, dword [esp]
mov dword [ebp + 8], eax
mov eax, dword [esp + 4]
mov dword [ebp + 0xc], eax
mov edx, dword [ebp + 8]
xor edx, dword [esp + 0x30]
mov dword [esp], edx
xor eax, dword [esp + 0x34]
mov dword [esp + 4], eax
mov eax, dword [ebp]
xor eax, dword [esp + 0x28]
mov dword [esp + 8], eax
mov eax, dword [ebp + 4]
xor eax, dword [esp + 0x2c]
mov dword [esp + 0xc], eax
lea ecx, [esp + 0x10]
mov edx, 0x4f58d0
mov eax, esp
call fcn.0046d58c
mov eax, dword [esp + 0x10]
xor dword [esp + 8], eax
mov eax, dword [esp + 0x14]
xor dword [esp + 0xc], eax
lea ecx, [esp + 0x10]
mov edx, 0x4f58d8
lea eax, [esp + 8]
call fcn.0046d58c
mov eax, dword [esp + 0x10]
xor dword [esp], eax
mov eax, dword [esp + 0x14]
xor dword [esp + 4], eax
mov eax, dword [esp + 8]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x4c], eax
mov eax, dword [esp]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 4]
mov dword [esp + 0x54], eax
mov eax, esi
call fcn.004054f0
cmp eax, 0x10
jne 0x46e24e
mov eax, dword [edi + 8]
mov dword [ebx + 0xf0], eax
mov eax, dword [edi + 0xc]
mov dword [ebx + 0xf4], eax
mov eax, dword [edi]
mov dword [ebx + 0xf8], eax
mov eax, dword [edi + 4]
mov dword [ebx + 0xfc], eax
mov eax, dword [ebp + 8]
mov dword [ebx], eax
mov eax, dword [ebp + 0xc]
mov dword [ebx + 4], eax
mov eax, dword [ebp]
mov dword [ebx + 8], eax
mov eax, dword [ebp + 4]
mov dword [ebx + 0xc], eax
mov eax, edi
mov edx, 0xf
call fcn.0046d788
mov eax, ebp
mov edx, 0xf
call fcn.0046d788
mov eax, dword [edi + 8]
mov dword [ebx + 0x10], eax
mov eax, dword [edi + 0xc]
mov dword [ebx + 0x14], eax
mov eax, dword [edi]
mov dword [ebx + 0x18], eax
mov eax, dword [edi + 4]
mov dword [ebx + 0x1c], eax
mov eax, dword [ebp + 8]
mov dword [ebx + 0x20], eax
mov eax, dword [ebp + 0xc]
mov dword [ebx + 0x24], eax
mov eax, dword [ebp]
mov dword [ebx + 0x28], eax
mov eax, dword [ebp + 4]
mov dword [ebx + 0x2c], eax
mov eax, ebp
mov edx, 0xf
call fcn.0046d788
mov eax, dword [ebp + 8]
mov dword [ebx + 0xc0], eax
mov eax, dword [ebp + 0xc]
mov dword [ebx + 0xc4], eax
mov eax, dword [ebp]
mov dword [ebx + 0xc8], eax
mov eax, dword [ebp + 4]
mov dword [ebx + 0xcc], eax
mov eax, edi
mov edx, 0x1e
call fcn.0046d788
mov eax, dword [edi + 8]
mov dword [ebx + 0x30], eax
mov eax, dword [edi + 0xc]
mov dword [ebx + 0x34], eax
mov eax, dword [edi]
mov dword [ebx + 0x38], eax
mov eax, dword [edi + 4]
mov dword [ebx + 0x3c], eax
mov eax, ebp
mov edx, 0xf
call fcn.0046d788
mov eax, dword [ebp + 8]
mov dword [ebx + 0x40], eax
mov eax, dword [ebp + 0xc]
mov dword [ebx + 0x44], eax
mov eax, edi
mov edx, 0xf
call fcn.0046d788
mov eax, ebp
mov edx, 0xf
call fcn.0046d788
mov eax, dword [edi]
mov dword [ebx + 0x48], eax
mov eax, dword [edi + 4]
mov dword [ebx + 0x4c], eax
mov eax, dword [ebp + 8]
mov dword [ebx + 0x50], eax
mov eax, dword [ebp + 0xc]
mov dword [ebx + 0x54], eax
mov eax, dword [ebp]
mov dword [ebx + 0x58], eax
mov eax, dword [ebp + 4]
mov dword [ebx + 0x5c], eax
mov eax, edi
mov edx, 0x11
call fcn.0046d788
mov eax, dword [edi + 8]
mov dword [ebx + 0xd0], eax
mov eax, dword [edi + 0xc]
mov dword [ebx + 0xd4], eax
mov eax, dword [edi]
mov dword [ebx + 0xd8], eax
mov eax, dword [edi + 4]
mov dword [ebx + 0xdc], eax
mov eax, edi
mov edx, 0x11
call fcn.0046d788
mov eax, ebp
mov edx, 0x22
call fcn.0046d788
mov eax, dword [edi + 8]
mov dword [ebx + 0x60], eax
mov eax, dword [edi + 0xc]
mov dword [ebx + 0x64], eax
mov eax, dword [edi]
mov dword [ebx + 0x68], eax
mov eax, dword [edi + 4]
mov dword [ebx + 0x6c], eax
mov eax, dword [ebp + 8]
mov dword [ebx + 0x70], eax
mov eax, dword [ebp + 0xc]
mov dword [ebx + 0x74], eax
mov eax, dword [ebp]
mov dword [ebx + 0x78], eax
mov eax, dword [ebp + 4]
mov dword [ebx + 0x7c], eax
mov eax, edi
mov edx, 0x11
call fcn.0046d788
mov eax, ebp
mov edx, 0x11
call fcn.0046d788
mov eax, dword [edi + 8]
mov dword [ebx + 0x80], eax
mov eax, dword [edi + 0xc]
mov dword [ebx + 0x84], eax
mov eax, dword [edi]
mov dword [ebx + 0x88], eax
mov eax, dword [edi + 4]
mov dword [ebx + 0x8c], eax
mov eax, dword [ebp + 8]
mov dword [ebx + 0x100], eax
mov eax, dword [ebp + 0xc]
mov dword [ebx + 0x104], eax
mov eax, dword [ebp]
mov dword [ebx + 0x108], eax
mov eax, dword [ebp + 4]
mov dword [ebx + 0x10c], eax
jmp 0x46e52e
mov eax, dword [edi + 8]
mov dword [ebx + 0xf0], eax
mov eax, dword [edi + 0xc]
mov dword [ebx + 0xf4], eax
mov eax, dword [edi]
mov dword [ebx + 0xf8], eax
mov eax, dword [edi + 4]
mov dword [ebx + 0xfc], eax
mov eax, dword [esp + 0x50]
mov dword [ebx], eax
mov eax, dword [esp + 0x54]
mov dword [ebx + 4], eax
mov eax, dword [esp + 0x48]
mov dword [ebx + 8], eax
mov eax, dword [esp + 0x4c]
mov dword [ebx + 0xc], eax
lea eax, [esp + 0x28]
mov edx, 0xf
call fcn.0046d788
mov eax, ebp
mov edx, 0xf
call fcn.0046d788
mov eax, dword [esp + 0x30]
mov dword [ebx + 0x10], eax
mov eax, dword [esp + 0x34]
mov dword [ebx + 0x14], eax
mov eax, dword [esp + 0x28]
mov dword [ebx + 0x18], eax
mov eax, dword [esp + 0x2c]
mov dword [ebx + 0x1c], eax
mov eax, dword [ebp + 8]
mov dword [ebx + 0x20], eax
mov eax, dword [ebp + 0xc]
mov dword [ebx + 0x24], eax
mov eax, dword [ebp]
mov dword [ebx + 0x28], eax
mov eax, dword [ebp + 4]
mov dword [ebx + 0x2c], eax
lea eax, [esp + 0x28]
mov edx, 0xf
call fcn.0046d788
mov eax, dword [esp + 0x30]
mov dword [ebx + 0xc0], eax
mov eax, dword [esp + 0x34]
mov dword [ebx + 0xc4], eax
mov eax, dword [esp + 0x28]
mov dword [ebx + 0xc8], eax
mov eax, dword [esp + 0x2c]
mov dword [ebx + 0xcc], eax
lea eax, [esp + 0x48]
mov edx, 0x1e
call fcn.0046d788
mov eax, dword [esp + 0x50]
mov dword [ebx + 0x30], eax
mov eax, dword [esp + 0x54]
mov dword [ebx + 0x34], eax
mov eax, dword [esp + 0x48]
mov dword [ebx + 0x38], eax
mov eax, dword [esp + 0x4c]
mov dword [ebx + 0x3c], eax
mov eax, edi
mov edx, 0x2d
call fcn.0046d788
mov eax, dword [edi + 8]
mov dword [ebx + 0x40], eax
mov eax, dword [edi + 0xc]
mov dword [ebx + 0x44], eax
mov eax, dword [edi]
mov dword [ebx + 0x48], eax
mov eax, dword [edi + 4]
mov dword [ebx + 0x4c], eax
mov eax, ebp
mov edx, 0x1e
call fcn.0046d788
mov eax, dword [ebp + 8]
mov dword [ebx + 0x50], eax
mov eax, dword [ebp + 0xc]
mov dword [ebx + 0x54], eax
mov eax, dword [ebp]
mov dword [ebx + 0x58], eax
mov eax, dword [ebp + 4]
mov dword [ebx + 0x5c], eax
mov eax, edi
mov edx, 0xf
call fcn.0046d788
mov eax, dword [edi + 8]
mov dword [ebx + 0xd0], eax
mov eax, dword [edi + 0xc]
mov dword [ebx + 0xd4], eax
mov eax, dword [edi]
mov dword [ebx + 0xd8], eax
mov eax, dword [edi + 4]
mov dword [ebx + 0xdc], eax
lea eax, [esp + 0x28]
mov edx, 0x1e
call fcn.0046d788
lea eax, [esp + 0x48]
mov edx, 0x1e
call fcn.0046d788
mov eax, dword [esp + 0x30]
mov dword [ebx + 0x60], eax
mov eax, dword [esp + 0x34]
mov dword [ebx + 0x64], eax
mov eax, dword [esp + 0x28]
mov dword [ebx + 0x68], eax
mov eax, dword [esp + 0x2c]
mov dword [ebx + 0x6c], eax
mov eax, dword [esp + 0x50]
mov dword [ebx + 0x70], eax
mov eax, dword [esp + 0x54]
mov dword [ebx + 0x74], eax
mov eax, dword [esp + 0x48]
mov dword [ebx + 0x78], eax
mov eax, dword [esp + 0x4c]
mov dword [ebx + 0x7c], eax
mov eax, edi
mov edx, 0x11
call fcn.0046d788
mov eax, dword [edi + 8]
mov dword [ebx + 0x80], eax
mov eax, dword [edi + 0xc]
mov dword [ebx + 0x84], eax
mov eax, dword [edi]
mov dword [ebx + 0x88], eax
mov eax, dword [edi + 4]
mov dword [ebx + 0x8c], eax
mov eax, ebp
mov edx, 0x20
call fcn.0046d788
mov eax, dword [ebp + 8]
mov dword [ebx + 0xe0], eax
mov eax, dword [ebp + 0xc]
mov dword [ebx + 0xe4], eax
mov eax, dword [ebp]
mov dword [ebx + 0xe8], eax
mov eax, dword [ebp + 4]
mov dword [ebx + 0xec], eax
lea eax, [esp + 0x28]
mov edx, 0x22
call fcn.0046d788
mov eax, ebp
mov edx, 0x11
call fcn.0046d788
mov eax, dword [esp + 0x30]
mov dword [ebx + 0x90], eax
mov eax, dword [esp + 0x34]
mov dword [ebx + 0x94], eax
mov eax, dword [esp + 0x28]
mov dword [ebx + 0x98], eax
mov eax, dword [esp + 0x2c]
mov dword [ebx + 0x9c], eax
mov eax, dword [ebp + 8]
mov dword [ebx + 0xa0], eax
mov eax, dword [ebp + 0xc]
mov dword [ebx + 0xa4], eax
mov eax, dword [ebp]
mov dword [ebx + 0xa8], eax
mov eax, dword [ebp + 4]
mov dword [ebx + 0xac], eax
mov eax, edi
mov edx, 0x22
call fcn.0046d788
mov eax, dword [edi + 8]
mov dword [ebx + 0xb0], eax
mov eax, dword [edi + 0xc]
mov dword [ebx + 0xb4], eax
mov eax, dword [edi]
mov dword [ebx + 0xb8], eax
mov eax, dword [edi + 4]
mov dword [ebx + 0xbc], eax
lea eax, [esp + 0x48]
mov edx, 0x33
call fcn.0046d788
mov eax, dword [esp + 0x50]
mov dword [ebx + 0x100], eax
mov eax, dword [esp + 0x54]
mov dword [ebx + 0x104], eax
mov eax, dword [esp + 0x48]
mov dword [ebx + 0x108], eax
mov eax, dword [esp + 0x4c]
mov dword [ebx + 0x10c], eax
mov al, 1
add esp, 0x58
pop ebp
pop edi
pop esi
pop ebx
ret