Function at 0x1007a630
Capabilities:
Encrypt data using aes
Reference aes constants

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x1c
mov edi, edx
mov esi, ecx
mov dh, byte [ecx]
mov al, byte [ecx + 1]
xor dh, byte [edi]
mov byte [ecx], dh
xor al, byte [edi + 1]
mov byte [esp + 3], al
mov byte [ecx + 1], al
mov al, byte [ecx + 2]
xor al, byte [edi + 2]
mov byte [esp + 2], al
mov byte [ecx + 2], al
mov al, byte [ecx + 3]
xor al, byte [edi + 3]
mov byte [esp + 4], al
mov byte [ecx + 3], al
mov dl, byte [ecx + 4]
xor dl, byte [edi + 4]
mov byte [ecx + 4], dl
mov al, byte [ecx + 5]
xor al, byte [edi + 5]
mov byte [esp + 5], al
mov byte [ecx + 5], al
mov al, byte [ecx + 6]
xor al, byte [edi + 6]
mov byte [esp + 7], al
mov byte [ecx + 6], al
mov al, byte [ecx + 7]
xor al, byte [edi + 7]
mov byte [esp + 8], al
mov byte [ecx + 7], al
mov al, byte [ecx + 8]
xor al, byte [edi + 8]
mov byte [ecx + 8], al
mov bh, byte [ecx + 9]
xor bh, byte [edi + 9]
mov byte [ecx + 9], bh
mov cl, byte [ecx + 0xa]
xor cl, byte [edi + 0xa]
mov byte [esp + 6], cl
mov byte [esi + 0xa], cl
mov cl, byte [esi + 0xb]
xor cl, byte [edi + 0xb]
mov byte [esp + 0x18], cl
mov byte [esi + 0xb], cl
mov ah, byte [esi + 0xc]
xor ah, byte [edi + 0xc]
mov byte [esi + 0xc], ah
mov cl, byte [esi + 0xd]
xor cl, byte [edi + 0xd]
mov byte [esp + 0x14], cl
mov byte [esi + 0xd], cl
mov cl, byte [esi + 0xe]
xor cl, byte [edi + 0xe]
mov byte [esp + 0x10], cl
mov byte [esi + 0xe], cl
mov cl, byte [esi + 0xf]
xor cl, byte [edi + 0xf]
mov byte [esp + 0xc], 1
nop word cs:[eax + eax]
nop dword [eax]
movzx ebp, dh
movzx edx, dl
mov bl, byte [ebp + str.cw]
mov byte [esi], bl
mov dl, byte [edx + str.cw]
mov byte [esi + 4], dl
movzx edx, al
mov al, byte [edx + str.cw]
mov byte [esi + 8], al
movzx eax, ah
mov al, byte [eax + str.cw]
mov byte [esi + 0xc], al
movzx edx, byte [esp + 5]
movzx eax, bh
mov ch, byte [edx + str.cw]
mov byte [esi + 1], ch
mov al, byte [eax + str.cw]
mov byte [esi + 5], al
movzx eax, byte [esp + 0x14]
mov al, byte [eax + str.cw]
mov byte [esi + 9], al
movzx eax, byte [esp + 3]
mov al, byte [eax + str.cw]
mov byte [esi + 0xd], al
movzx eax, byte [esp + 2]
mov al, byte [eax + str.cw]
movzx edx, byte [esp + 6]
mov bh, byte [edx + str.cw]
mov dl, ch
mov byte [esi + 2], bh
mov byte [esi + 0xa], al
movzx eax, byte [esp + 0x10]
mov al, byte [eax + str.cw]
mov byte [esi + 6], al
movzx eax, byte [esp + 7]
mov al, byte [eax + str.cw]
mov byte [esi + 0xe], al
movzx eax, byte [esp + 0x18]
mov al, byte [eax + str.cw]
movzx ecx, cl
mov dh, byte [ecx + str.cw]
mov byte [esi + 3], dh
mov byte [esi + 0xf], al
movzx eax, byte [esp + 8]
mov al, byte [eax + str.cw]
mov byte [esi + 0xb], al
movzx eax, byte [esp + 4]
mov al, byte [eax + str.cw]
mov byte [esi + 7], al
mov eax, 7
nop word [eax + eax]
mov byte [esp + 3], bl
mov byte [esp + 2], dl
xor dl, bl
mov bl, dl
xor bl, bh
mov byte [esp + 4], bl
xor bl, dh
mov ecx, edx
add cl, dl
mov ch, dl
sar ch, 7
and ch, 0x1b
xor cl, byte [esp + 3]
xor cl, ch
xor cl, bl
mov byte [esi + eax - 7], cl
mov cl, dh
xor cl, bh
xor bh, byte [esp + 2]
mov ch, bh
add ch, bh
sar bh, 7
and bh, 0x1b
xor ch, byte [esp + 2]
xor ch, bl
xor ch, bh
mov byte [esi + eax - 6], ch
mov ch, cl
add ch, cl
sar cl, 7
and cl, 0x1b
xor dl, dh
xor dl, ch
xor dl, cl
mov byte [esi + eax - 5], dl
xor dh, byte [esp + 3]
mov cl, dh
add cl, dh
sar dh, 7
and dh, 0x1b
xor cl, byte [esp + 4]
xor cl, dh
mov byte [esi + eax - 4], cl
cmp eax, 0x13
je 0x1007a880
movzx ebx, byte [esi + eax - 3]
movzx edx, byte [esi + eax - 2]
mov bh, byte [esi + eax - 1]
mov dh, byte [esi + eax]
add eax, 4
jmp 0x1007a7e0
mov bl, byte [esp + 0xc]
movzx ecx, bl
mov edx, esi
push edi
call fcn.1007ad50
add esp, 4
inc bl
mov dh, byte [esi]
cmp bl, 0xe
je 0x1007a8f9
mov byte [esp + 0xc], bl
mov dl, byte [esi + 4]
mov al, byte [esi + 8]
mov ah, byte [esi + 0xc]
mov cl, byte [esi + 1]
mov byte [esp + 3], cl
mov cl, byte [esi + 2]
mov byte [esp + 2], cl
mov cl, byte [esi + 5]
mov byte [esp + 5], cl
mov bh, byte [esi + 9]
mov cl, byte [esi + 0xd]
mov byte [esp + 0x14], cl
mov cl, byte [esi + 6]
mov byte [esp + 7], cl
mov cl, byte [esi + 0xa]
mov byte [esp + 6], cl
mov cl, byte [esi + 0xe]
mov byte [esp + 0x10], cl
mov cl, byte [esi + 3]
mov byte [esp + 4], cl
mov cl, byte [esi + 7]
mov byte [esp + 8], cl
mov cl, byte [esi + 0xb]
mov byte [esp + 0x18], cl
mov cl, byte [esi + 0xf]
jmp 0x1007a700
movzx eax, dh
mov bh, byte [eax + str.cw]
mov byte [esi], bh
movzx eax, byte [esi + 4]
mov al, byte [eax + str.cw]
mov byte [esp + 4], al
mov byte [esi + 4], al
movzx eax, byte [esi + 8]
mov al, byte [eax + str.cw]
mov byte [esp + 2], al
mov byte [esi + 8], al
movzx eax, byte [esi + 0xc]
mov al, byte [eax + str.cw]
mov byte [esp + 3], al
mov byte [esi + 0xc], al
movzx eax, byte [esi + 1]
mov dl, byte [eax + str.cw]
mov byte [esp + 7], dl
movzx eax, byte [esi + 5]
mov dh, byte [eax + str.cw]
movzx eax, byte [esi + 9]
mov bl, byte [eax + str.cw]
movzx eax, byte [esi + 0xd]
mov ch, byte [eax + str.cw]
mov byte [esp + 5], ch
movzx eax, byte [esi + 2]
mov cl, byte [eax + str.cw]
mov byte [esp + 6], cl
movzx eax, byte [esi + 0xa]
mov ah, byte [eax + str.cw]
movzx ebp, byte [esi + 6]
mov dword [esp + 0xc], ebp
movzx ebp, byte [esi + 0xe]
mov dword [esp + 8], ebp
movzx ebp, byte [esi + 3]
mov dword [esp + 0x18], ebp
movzx ebp, byte [esi + 7]
mov dword [esp + 0x14], ebp
movzx ebp, byte [esi + 0xb]
mov dword [esp + 0x10], ebp
movzx ebp, byte [esi + 0xf]
mov byte [esi + 1], dh
mov byte [esi + 5], bl
mov byte [esi + 9], ch
mov byte [esi + 0xd], dl
mov byte [esi + 2], ah
mov byte [esi + 0xa], cl
mov ecx, dword [esp + 8]
mov dl, byte [ecx + str.cw]
mov byte [esi + 6], dl
mov ecx, dword [esp + 0xc]
mov al, byte [ecx + str.cw]
mov byte [esp + 8], al
mov byte [esi + 0xe], al
mov al, byte [ebp + str.cw]
mov byte [esi + 3], al
mov ecx, dword [esp + 0x10]
mov cl, byte [ecx + str.cw]
mov byte [esp + 0xc], cl
mov byte [esi + 0xf], cl
mov ecx, dword [esp + 0x14]
mov ch, byte [ecx + str.cw]
mov byte [esi + 0xb], ch
mov ebp, dword [esp + 0x18]
mov cl, byte [ebp + str.cw]
mov byte [esi + 7], cl
xor bh, byte [edi + 0xe0]
mov byte [esi], bh
xor dh, byte [edi + 0xe1]
mov byte [esi + 1], dh
xor ah, byte [edi + 0xe2]
mov byte [esi + 2], ah
xor al, byte [edi + 0xe3]
mov byte [esi + 3], al
mov al, byte [esp + 4]
xor al, byte [edi + 0xe4]
mov byte [esi + 4], al
xor bl, byte [edi + 0xe5]
mov byte [esi + 5], bl
xor dl, byte [edi + 0xe6]
mov byte [esi + 6], dl
xor cl, byte [edi + 0xe7]
mov byte [esi + 7], cl
mov al, byte [esp + 2]
xor al, byte [edi + 0xe8]
mov byte [esi + 8], al
mov al, byte [esp + 5]
xor al, byte [edi + 0xe9]
mov byte [esi + 9], al
mov al, byte [esp + 6]
xor al, byte [edi + 0xea]
mov byte [esi + 0xa], al
xor ch, byte [edi + 0xeb]
mov byte [esi + 0xb], ch
mov al, byte [esp + 3]
xor al, byte [edi + 0xec]
mov byte [esi + 0xc], al
mov al, byte [esp + 7]
xor al, byte [edi + 0xed]
mov byte [esi + 0xd], al
mov al, byte [esp + 8]
xor al, byte [edi + 0xee]
mov byte [esi + 0xe], al
mov al, byte [esp + 0xc]
xor al, byte [edi + 0xef]
mov byte [esi + 0xf], al
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret