Function at 0x429010
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0xc
push ebx
push ebp
mov ebp, dword [esp + 0x1c]
push esi
mov ebx, ebp
push edi
mov edi, edx
and ebx, 0xffff
mov edx, ebx
mov eax, ebx
shr edx, 4
and edx, 0xf0
and ebp, 0x1f
shr eax, 0xc
add edx, 0x10
inc eax
shl eax, 4
shl ebp, 4
cmp edx, 0x10
mov esi, ecx
jne 0x4290c7
cmp eax, edx
jne 0x4290c7
shr ebx, 5
and ebx, 3
cmp ebx, 3
ja case.default.0x4290ea
jmp dword [ebx*4 + 0x4292b0]
mov eax, dword [esp + 0x20]
push ebp
push eax
mov edx, edi
mov ecx, esi
call fcn.004292d0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc
ret 8
mov ecx, dword [esp + 0x20]
push ebp
push ecx
mov edx, edi
mov ecx, esi
call fcn.00429450
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc
ret 8
mov edx, dword [esp + 0x20]
push ebp
push edx
mov edx, edi
mov ecx, esi
call fcn.004295d0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc
ret 8
mov eax, dword [esp + 0x20]
push ebp
push eax
mov edx, edi
mov ecx, esi
call fcn.00429750
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc
ret 8
movsx ecx, word [esp + 0x20]
movsx edi, di
shr ebx, 5
mov dword [esp + 0x10], edi
and ebx, 3
add edi, edx
add ecx, eax
cmp ebx, 3
mov dword [esp + 0x24], ecx
ja case.default.0x4290ea
jmp dword [ebx*4 + 0x4292c0]
movsx eax, word [esp + 0x20]
cmp eax, ecx
mov dword [esp + 0x20], eax
jge case.default.0x4290ea
mov ebx, dword [esp + 0x10]
cmp ebx, edi
jge 0x42913a
mov dword [esp + 0x14], esi
mov ecx, dword [esp + 0x14]
push ebp
xor ecx, esi
push eax
and ecx, 0xf
mov edx, ebx
xor ecx, esi
call fcn.004292d0
add ebx, 0x10
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x20]
inc ecx
cmp ebx, edi
mov dword [esp + 0x14], ecx
jl 0x42910e
mov ecx, dword [esp + 0x24]
add eax, 0x10
add esi, 0x10
cmp eax, ecx
mov dword [esp + 0x20], eax
jl 0x429102
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc
ret 8
movsx ecx, word [esp + 0x20]
mov eax, dword [esp + 0x24]
mov dword [esp + 0x20], ecx
cmp ecx, eax
jge case.default.0x4290ea
mov eax, edx
cdq
and edx, 0xf
add eax, edx
sar eax, 4
dec eax
mov dword [esp + 0x18], eax
mov ebx, dword [esp + 0x10]
cmp ebx, edi
jge 0x4291b1
mov edx, dword [esp + 0x18]
add edx, esi
mov dword [esp + 0x14], edx
push ebp
push ecx
mov ecx, dword [esp + 0x1c]
mov edx, ebx
xor ecx, esi
and ecx, 0xf
xor ecx, esi
call fcn.00429450
add ebx, 0x10
mov ecx, dword [esp + 0x14]
dec ecx
cmp ebx, edi
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x20]
jl 0x429189
mov eax, dword [esp + 0x24]
add ecx, 0x10
add esi, 0x10
cmp ecx, eax
mov dword [esp + 0x20], ecx
jl 0x429177
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc
ret 8
lea ebx, [esi + eax - 0x10]
movsx eax, word [esp + 0x20]
cmp eax, ecx
mov dword [esp + 0x20], eax
jge case.default.0x4290ea
mov esi, dword [esp + 0x10]
cmp esi, edi
jge 0x42921a
mov dword [esp + 0x14], ebx
mov ecx, dword [esp + 0x14]
push ebp
xor ecx, ebx
push eax
and ecx, 0xf
mov edx, esi
xor ecx, ebx
call fcn.004295d0
add esi, 0x10
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x20]
inc ecx
cmp esi, edi
mov dword [esp + 0x14], ecx
jl 0x4291ee
mov ecx, dword [esp + 0x24]
add eax, 0x10
sub ebx, 0x10
cmp eax, ecx
mov dword [esp + 0x20], eax
jl 0x4291e2
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc
ret 8
movsx ecx, word [esp + 0x20]
lea ebx, [esi + eax - 0x10]
mov eax, dword [esp + 0x24]
cmp ecx, eax
mov dword [esp + 0x20], ecx
jge case.default.0x4290ea
mov eax, edx
cdq
and edx, 0xf
add eax, edx
sar eax, 4
dec eax
mov dword [esp + 0x18], eax
mov esi, dword [esp + 0x10]
cmp esi, edi
jge 0x429291
mov eax, dword [esp + 0x18]
add eax, ebx
mov dword [esp + 0x14], eax
push ebp
push ecx
mov ecx, dword [esp + 0x1c]
mov edx, esi
xor ecx, ebx
and ecx, 0xf
xor ecx, ebx
call fcn.00429750
add esi, 0x10
mov ecx, dword [esp + 0x14]
dec ecx
cmp esi, edi
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x20]
jl 0x429269
mov eax, dword [esp + 0x24]
add ecx, 0x10
sub ebx, 0x10
cmp ecx, eax
mov dword [esp + 0x20], ecx
jl 0x429257
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc
ret 8