Function at 0x45b030
Capabilities:
Encode data using xor
Encrypt data using twofish

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x254
mov eax, dword [0x51484c]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
xor esi, esi
xor edi, edi
mov dword [ebp - 0x240], eax
cmp dword [0x512ae8], esi
je 0x45b060
call fcn.0045a830
mov eax, dword [ebp - 0x240]
mov ecx, dword [eax + 0xc]
mov eax, dword [eax + 4]
mov dword [ebp - 0x254], eax
add eax, 0x3f
lea edx, [ecx + ecx + 8]
mov dword [ebp - 0x250], edx
cdq
and edx, 0x3f
add eax, edx
sar eax, 6
xor ebx, ebx
mov dword [ebp - 0x248], eax
test eax, eax
jle 0x45b115
lea ecx, [ebp + eax*4 - 0x21c]
mov dword [ebp - 0x24c], ecx
mov ecx, dword [ebp - 0x240]
lea edx, [ecx + eax*4 + 0x2c]
add ecx, 0x14
mov dword [ebp - 0x244], edx
mov dword [ebp - 0x23c], ecx
mov edi, edi
mov ecx, dword [ebp - 0x23c]
mov eax, dword [ecx - 4]
mov ecx, dword [ecx]
push ecx
push eax
mov dword [ebp + ebx*4 - 0x228], eax
mov dword [ebp + ebx*4 - 0x238], ecx
call fcn.0045a6c0
mov ecx, dword [ebp - 0x244]
mov edx, dword [ebp - 0x24c]
add dword [ebp - 0x23c], 8
mov dword [ecx], eax
mov dword [edx], eax
inc ebx
sub ecx, 4
sub edx, 4
add esp, 8
mov dword [ebp - 0x244], ecx
mov dword [ebp - 0x24c], edx
cmp ebx, dword [ebp - 0x248]
jl 0x45b0c0
mov eax, dword [ebp - 0x250]
cdq
sub eax, edx
xor ebx, ebx
sar eax, 1
mov dword [ebp - 0x244], ebx
test eax, eax
jle 0x45b4ae
mov ecx, dword [ebp - 0x248]
mov edx, dword [ebp - 0x240]
and ecx, 3
add edx, 0x44
mov dword [ebp - 0x24c], ecx
mov dword [ebp - 0x248], edx
mov dword [ebp - 0x250], eax
mov eax, ecx
sub eax, 0
mov dword [ebp - 0x23c], ebx
je 0x45b1c1
sub eax, 2
je 0x45b20e
dec eax
jne 0x45b2da
mov al, byte [ebp - 0x239]
mov cl, byte [ebp - 0x23a]
mov dl, byte [ebp - 0x23b]
movzx edi, bl
mov bl, byte [edi + 0x5129e8]
xor bl, byte [ebp - 0x220]
movzx edx, dl
mov dl, byte [edx + 0x5129e8]
xor dl, byte [ebp - 0x21f]
movzx ecx, cl
mov cl, byte [ecx + 0x5128e8]
xor cl, byte [ebp - 0x21e]
movzx eax, al
mov al, byte [eax + 0x5128e8]
xor al, byte [ebp - 0x21d]
jmp 0x45b226
movzx ecx, byte [ebp - 0x23b]
mov dl, byte [ecx + 0x5128e8]
xor dl, byte [ebp - 0x21b]
movzx eax, bl
mov bl, byte [eax + 0x5129e8]
movzx eax, byte [ebp - 0x23a]
mov cl, byte [eax + 0x5128e8]
movzx eax, byte [ebp - 0x239]
mov al, byte [eax + 0x5129e8]
xor bl, byte [ebp - 0x21c]
xor cl, byte [ebp - 0x21a]
xor al, byte [ebp - 0x219]
jmp 0x45b183
mov al, byte [ebp - 0x239]
mov cl, byte [ebp - 0x23a]
mov dl, byte [ebp - 0x23b]
mov bl, byte [ebp - 0x23c]
movzx edi, byte [ebp - 0x221]
movzx eax, al
movzx eax, byte [eax + 0x5129e8]
xor eax, edi
movzx eax, byte [eax + 0x5129e8]
movzx edi, byte [ebp - 0x225]
movzx ecx, cl
movzx ecx, byte [ecx + 0x5128e8]
xor eax, edi
movzx edi, byte [ebp - 0x222]
xor ecx, edi
movzx ecx, byte [ecx + 0x5129e8]
movzx edi, byte [ebp - 0x226]
xor ecx, edi
mov edi, dword [eax*4 + 0x517c18]
xor edi, dword [ecx*4 + 0x517818]
movzx ecx, byte [ebp - 0x223]
movzx edx, dl
movzx eax, byte [edx + 0x5129e8]
xor eax, ecx
movzx edx, byte [eax + 0x5128e8]
movzx eax, byte [ebp - 0x227]
xor edx, eax
xor edi, dword [edx*4 + 0x517418]
movzx eax, byte [ebp - 0x224]
movzx ecx, bl
movzx edx, byte [ecx + 0x5128e8]
mov ebx, dword [ebp - 0x244]
xor edx, eax
movzx ecx, byte [edx + 0x5128e8]
movzx edx, byte [ebp - 0x228]
xor ecx, edx
xor edi, dword [ecx*4 + 0x517018]
mov ecx, dword [ebp - 0x24c]
lea eax, [ebx + 0x1010101]
mov dword [ebp - 0x23c], eax
mov eax, ecx
sub eax, 0
je 0x45b35f
sub eax, 2
je 0x45b3b0
dec eax
jne 0x45b474
mov bl, byte [ebp - 0x239]
mov cl, byte [ebp - 0x23a]
mov dl, byte [ebp - 0x23b]
mov al, byte [ebp - 0x23c]
movzx eax, al
mov al, byte [eax + 0x5129e8]
xor al, byte [ebp - 0x230]
movzx edx, dl
mov dl, byte [edx + 0x5129e8]
xor dl, byte [ebp - 0x22f]
mov byte [ebp - 0x23c], al
movzx eax, cl
mov cl, byte [eax + 0x5128e8]
xor cl, byte [ebp - 0x22e]
movzx eax, bl
mov al, byte [eax + 0x5128e8]
xor al, byte [ebp - 0x22d]
mov ebx, dword [ebp - 0x244]
jmp 0x45b3c2
movzx ecx, byte [ebp - 0x23c]
mov al, byte [ecx + 0x5129e8]
movzx edx, byte [ebp - 0x23b]
movzx ecx, byte [ebp - 0x23a]
movzx esi, byte [ebp - 0x239]
mov dl, byte [edx + 0x5128e8]
mov cl, byte [ecx + 0x5128e8]
mov bl, byte [esi + 0x5129e8]
xor al, byte [ebp - 0x22c]
xor dl, byte [ebp - 0x22b]
xor cl, byte [ebp - 0x22a]
xor bl, byte [ebp - 0x229]
jmp 0x45b315
mov al, byte [ebp - 0x239]
mov cl, byte [ebp - 0x23a]
mov dl, byte [ebp - 0x23b]
movzx esi, byte [ebp - 0x231]
movzx eax, al
movzx eax, byte [eax + 0x5129e8]
xor eax, esi
movzx eax, byte [eax + 0x5129e8]
movzx esi, byte [ebp - 0x235]
movzx ecx, cl
movzx ecx, byte [ecx + 0x5128e8]
xor eax, esi
movzx esi, byte [ebp - 0x232]
xor ecx, esi
movzx ecx, byte [ecx + 0x5129e8]
movzx esi, byte [ebp - 0x236]
xor ecx, esi
mov esi, dword [eax*4 + 0x517c18]
xor esi, dword [ecx*4 + 0x517818]
movzx ecx, byte [ebp - 0x233]
movzx edx, dl
movzx eax, byte [edx + 0x5129e8]
xor eax, ecx
movzx edx, byte [eax + 0x5128e8]
movzx eax, byte [ebp - 0x237]
movzx ecx, byte [ebp - 0x23c]
xor edx, eax
xor esi, dword [edx*4 + 0x517418]
movzx edx, byte [ecx + 0x5128e8]
movzx eax, byte [ebp - 0x234]
xor edx, eax
movzx ecx, byte [edx + 0x5128e8]
movzx edx, byte [ebp - 0x238]
xor ecx, edx
xor esi, dword [ecx*4 + 0x517018]
mov ecx, dword [ebp - 0x24c]
mov eax, dword [ebp - 0x248]
rol esi, 8
lea edx, [esi + edi]
mov dword [eax - 4], edx
lea esi, [edi + esi*2]
mov edx, esi
rol edx, 9
mov dword [eax], edx
add eax, 8
add ebx, 0x2020202
dec dword [ebp - 0x250]
mov dword [ebp - 0x248], eax
mov dword [ebp - 0x244], ebx
jne 0x45b154
mov eax, dword [ebp - 0x254]
sub eax, 0x80
je 0x45bae9
sub eax, 0x40
je 0x45b8a7
sub eax, 0x40
jne 0x45b854
mov eax, dword [ebp - 0x20c]
push eax
lea ecx, [ebp - 0x204]
push 0x5129e8
push ecx
call fcn.0045ad50
add esp, 0xc
xor eax, eax
mov edi, edi
movzx edx, byte [ebp + eax - 0x204]
movzx ecx, byte [edx + 0x5129e8]
movzx edx, byte [ebp + eax - 0x203]
mov byte [ebp + eax - 0x104], cl
movzx ecx, byte [edx + 0x5129e8]
mov byte [ebp + eax - 0x103], cl
add eax, 2
cmp eax, 0x100
jl 0x45b4f0
mov edx, dword [ebp - 0x210]
push edx
lea eax, [ebp - 0x104]
push eax
mov ecx, eax
push ecx
call fcn.0045ad50
mov edi, dword [ebp - 0x240]
movzx edx, byte [ebp - 0x218]
movzx esi, byte [ebp - 0x214]
add esp, 0xc
xor eax, eax
lea ecx, [edi + 0xe8]
jmp 0x45b560
movzx ebx, byte [ebp + eax - 0x104]
movzx ebx, byte [ebx + 0x5128e8]
xor ebx, esi
movzx ebx, byte [ebx + 0x5128e8]
xor ebx, edx
mov ebx, dword [ebx*4 + 0x517018]
mov dword [ecx - 8], ebx
movzx ebx, byte [ebp + eax - 0x103]
movzx ebx, byte [ebx + 0x5128e8]
xor ebx, esi
movzx ebx, byte [ebx + 0x5128e8]
xor ebx, edx
mov ebx, dword [ebx*4 + 0x517018]
mov dword [ecx], ebx
add eax, 2
add ecx, 0x10
cmp eax, 0x100
jl 0x45b560
mov edx, dword [ebp - 0x20b]
push edx
lea eax, [ebp - 0x204]
push 0x5128e8
push eax
call fcn.0045ad50
add esp, 0xc
xor eax, eax
movzx ecx, byte [ebp + eax - 0x204]
movzx edx, byte [ecx + 0x5129e8]
movzx ecx, byte [ebp + eax - 0x203]
mov byte [ebp + eax - 0x104], dl
movzx edx, byte [ecx + 0x5129e8]
mov byte [ebp + eax - 0x103], dl
add eax, 2
cmp eax, 0x100
jl 0x45b5d1
mov eax, dword [ebp - 0x20f]
push eax
lea ecx, [ebp - 0x104]
push ecx
mov edx, ecx
push edx
call fcn.0045ad50
movzx edx, byte [ebp - 0x217]
movzx esi, byte [ebp - 0x213]
add esp, 0xc
xor eax, eax
lea ecx, [edi + 0xec]
jmp 0x45b640
movzx ebx, byte [ebp + eax - 0x104]
movzx ebx, byte [ebx + 0x5129e8]
xor ebx, esi
movzx ebx, byte [ebx + 0x5128e8]
xor ebx, edx
mov ebx, dword [ebx*4 + 0x517418]
mov dword [ecx - 8], ebx
movzx ebx, byte [ebp + eax - 0x103]
movzx ebx, byte [ebx + 0x5129e8]
xor ebx, esi
movzx ebx, byte [ebx + 0x5128e8]
xor ebx, edx
mov ebx, dword [ebx*4 + 0x517418]
mov dword [ecx], ebx
add eax, 2
add ecx, 0x10
cmp eax, 0x100
jl 0x45b640
mov eax, dword [ebp - 0x20a]
push eax
lea ecx, [ebp - 0x204]
push 0x5128e8
push ecx
call fcn.0045ad50
add esp, 0xc
xor eax, eax
movzx edx, byte [ebp + eax - 0x204]
movzx ecx, byte [edx + 0x5128e8]
movzx edx, byte [ebp + eax - 0x203]
mov byte [ebp + eax - 0x104], cl
movzx ecx, byte [edx + 0x5128e8]
mov byte [ebp + eax - 0x103], cl
add eax, 2
cmp eax, 0x100
jl 0x45b6b1
mov edx, dword [ebp - 0x20e]
push edx
lea eax, [ebp - 0x104]
push eax
mov ecx, eax
push ecx
call fcn.0045ad50
movzx edx, byte [ebp - 0x216]
movzx esi, byte [ebp - 0x212]
add esp, 0xc
xor eax, eax
lea ecx, [edi + 0x8e8]
jmp 0x45b720
movzx ebx, byte [ebp + eax - 0x104]
movzx ebx, byte [ebx + 0x5128e8]
xor ebx, esi
movzx ebx, byte [ebx + 0x5129e8]
xor ebx, edx
mov ebx, dword [ebx*4 + 0x517818]
mov dword [ecx - 8], ebx
movzx ebx, byte [ebp + eax - 0x103]
movzx ebx, byte [ebx + 0x5128e8]
xor ebx, esi
movzx ebx, byte [ebx + 0x5129e8]
xor ebx, edx
mov ebx, dword [ebx*4 + 0x517818]
mov dword [ecx], ebx
add eax, 2
add ecx, 0x10
cmp eax, 0x100
jl 0x45b720
mov edx, dword [ebp - 0x209]
push edx
lea eax, [ebp - 0x204]
push 0x5129e8
push eax
call fcn.0045ad50
add esp, 0xc
xor eax, eax
movzx ecx, byte [ebp + eax - 0x204]
movzx edx, byte [ecx + 0x5128e8]
movzx ecx, byte [ebp + eax - 0x203]
mov byte [ebp + eax - 0x104], dl
movzx edx, byte [ecx + 0x5128e8]
mov byte [ebp + eax - 0x103], dl
add eax, 2
cmp eax, 0x100
jl 0x45b791
mov eax, dword [ebp - 0x20d]
push eax
lea ecx, [ebp - 0x104]
push ecx
mov edx, ecx
push edx
call fcn.0045ad50
movzx edx, byte [ebp - 0x215]
movzx esi, byte [ebp - 0x211]
add esp, 0xc
xor eax, eax
lea ecx, [edi + 0x8ec]
jmp 0x45b800
movzx edi, byte [ebp + eax - 0x104]
movzx edi, byte [edi + 0x5129e8]
xor edi, esi
movzx edi, byte [edi + 0x5129e8]
xor edi, edx
mov edi, dword [edi*4 + 0x517c18]
mov dword [ecx - 8], edi
movzx edi, byte [ebp + eax - 0x103]
movzx edi, byte [edi + 0x5129e8]
xor edi, esi
movzx edi, byte [edi + 0x5129e8]
xor edi, edx
mov edi, dword [edi*4 + 0x517c18]
mov dword [ecx], edi
add eax, 2
add ecx, 0x10
cmp eax, 0x100
jl 0x45b800
mov edi, dword [ebp - 0x240]
cmp byte [edi], 0
jne 0x45b891
mov ecx, dword [edi + 0xc]
lea eax, [edi + 0x60]
lea ecx, [eax + ecx*8 - 8]
cmp eax, ecx
jae 0x45b88e
lea ecx, [ecx]
mov ebx, dword [ecx]
mov edx, dword [eax]
mov esi, dword [eax + 4]
mov dword [eax], ebx
mov ebx, dword [ecx + 4]
mov dword [eax + 4], ebx
mov dword [ecx], edx
mov dword [ecx + 4], esi
add eax, 8
sub ecx, 8
cmp eax, ecx
jb 0x45b870
mov byte [edi], 0
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
mov eax, 1
pop ebx
call fcn.00462878
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x210]
push eax
lea ecx, [ebp - 0x104]
push 0x5129e8
push ecx
call fcn.0045ad50
mov edi, dword [ebp - 0x240]
movzx edx, byte [ebp - 0x218]
movzx esi, byte [ebp - 0x214]
add esp, 0xc
xor eax, eax
lea ecx, [edi + 0xe8]
mov edi, edi
movzx ebx, byte [ebp + eax - 0x104]
movzx ebx, byte [ebx + 0x5128e8]
xor ebx, esi
movzx ebx, byte [ebx + 0x5128e8]
xor ebx, edx
mov ebx, dword [ebx*4 + 0x517018]
mov dword [ecx - 8], ebx
movzx ebx, byte [ebp + eax - 0x103]
movzx ebx, byte [ebx + 0x5128e8]
xor ebx, esi
movzx ebx, byte [ebx + 0x5128e8]
xor ebx, edx
mov ebx, dword [ebx*4 + 0x517018]
mov dword [ecx], ebx
add eax, 2
add ecx, 0x10
cmp eax, 0x100
jl 0x45b8e0
mov edx, dword [ebp - 0x20f]
push edx
lea eax, [ebp - 0x104]
push 0x5129e8
push eax
call fcn.0045ad50
movzx edx, byte [ebp - 0x217]
movzx esi, byte [ebp - 0x213]
add esp, 0xc
xor eax, eax
lea ecx, [edi + 0xec]
jmp 0x45b970
movzx ebx, byte [ebp + eax - 0x104]
movzx ebx, byte [ebx + 0x5129e8]
xor ebx, esi
movzx ebx, byte [ebx + 0x5128e8]
xor ebx, edx
mov ebx, dword [ebx*4 + 0x517418]
mov dword [ecx - 8], ebx
movzx ebx, byte [ebp + eax - 0x103]
movzx ebx, byte [ebx + 0x5129e8]
xor ebx, esi
movzx ebx, byte [ebx + 0x5128e8]
xor ebx, edx
mov ebx, dword [ebx*4 + 0x517418]
mov dword [ecx], ebx
add eax, 2
add ecx, 0x10
cmp eax, 0x100
jl 0x45b970
mov ecx, dword [ebp - 0x20e]
push ecx
lea edx, [ebp - 0x104]
push 0x5128e8
push edx
call fcn.0045ad50
movzx edx, byte [ebp - 0x216]
movzx esi, byte [ebp - 0x212]
add esp, 0xc
xor eax, eax
lea ecx, [edi + 0x8e8]
jmp 0x45ba00
movzx ebx, byte [ebp + eax - 0x104]
movzx ebx, byte [ebx + 0x5128e8]
xor ebx, esi
movzx ebx, byte [ebx + 0x5129e8]
xor ebx, edx
mov ebx, dword [ebx*4 + 0x517818]
mov dword [ecx - 8], ebx
movzx ebx, byte [ebp + eax - 0x103]
movzx ebx, byte [ebx + 0x5128e8]
xor ebx, esi
movzx ebx, byte [ebx + 0x5129e8]
xor ebx, edx
mov ebx, dword [ebx*4 + 0x517818]
mov dword [ecx], ebx
add eax, 2
add ecx, 0x10
cmp eax, 0x100
jl 0x45ba00
mov eax, dword [ebp - 0x20d]
push eax
lea ecx, [ebp - 0x104]
push 0x5128e8
push ecx
call fcn.0045ad50
movzx edx, byte [ebp - 0x215]
movzx esi, byte [ebp - 0x211]
add esp, 0xc
xor eax, eax
lea ecx, [edi + 0x8ec]
jmp 0x45ba90
movzx edi, byte [ebp + eax - 0x104]
movzx edi, byte [edi + 0x5129e8]
xor edi, esi
movzx edi, byte [edi + 0x5129e8]
xor edi, edx
mov edi, dword [edi*4 + 0x517c18]
mov dword [ecx - 8], edi
movzx edi, byte [ebp + eax - 0x103]
movzx edi, byte [edi + 0x5129e8]
xor edi, esi
movzx edi, byte [edi + 0x5129e8]
xor edi, edx
mov edi, dword [edi*4 + 0x517c18]
mov dword [ecx], edi
add eax, 2
add ecx, 0x10
cmp eax, 0x100
jl 0x45ba90
jmp 0x45b854
mov edx, dword [ebp - 0x214]
push edx
lea eax, [ebp - 0x104]
push 0x5128e8
push eax
call fcn.0045ad50
mov edi, dword [ebp - 0x240]
movzx edx, byte [ebp - 0x218]
add esp, 0xc
xor eax, eax
lea ecx, [edi + 0xe8]
lea esp, [esp]
movzx esi, byte [ebp + eax - 0x104]
movzx esi, byte [esi + 0x5128e8]
xor esi, edx
mov esi, dword [esi*4 + 0x517018]
mov dword [ecx - 8], esi
movzx esi, byte [ebp + eax - 0x103]
movzx esi, byte [esi + 0x5128e8]
xor esi, edx
mov esi, dword [esi*4 + 0x517018]
mov dword [ecx], esi
add eax, 2
add ecx, 0x10
cmp eax, 0x100
jl 0x45bb20
mov ecx, dword [ebp - 0x213]
push ecx
lea edx, [ebp - 0x104]
push 0x5129e8
push edx
call fcn.0045ad50
movzx edx, byte [ebp - 0x217]
add esp, 0xc
xor eax, eax
lea ecx, [edi + 0xec]
lea esp, [esp]
movzx esi, byte [ebp + eax - 0x104]
movzx esi, byte [esi + 0x5128e8]
xor esi, edx
mov esi, dword [esi*4 + 0x517418]
mov dword [ecx - 8], esi
movzx esi, byte [ebp + eax - 0x103]
movzx esi, byte [esi + 0x5128e8]
xor esi, edx
mov esi, dword [esi*4 + 0x517418]
mov dword [ecx], esi
add eax, 2
add ecx, 0x10
cmp eax, 0x100
jl 0x45bb90
mov eax, dword [ebp - 0x212]
push eax
lea ecx, [ebp - 0x104]
push 0x5128e8
push ecx
call fcn.0045ad50
movzx edx, byte [ebp - 0x216]
add esp, 0xc
xor eax, eax
lea ecx, [edi + 0x8e8]
lea esp, [esp]
movzx esi, byte [ebp + eax - 0x104]
movzx esi, byte [esi + 0x5129e8]
xor esi, edx
mov esi, dword [esi*4 + 0x517818]
mov dword [ecx - 8], esi
movzx esi, byte [ebp + eax - 0x103]
movzx esi, byte [esi + 0x5129e8]
xor esi, edx
mov esi, dword [esi*4 + 0x517818]
mov dword [ecx], esi
add eax, 2
add ecx, 0x10
cmp eax, 0x100
jl 0x45bc00
mov edx, dword [ebp - 0x211]
push edx
lea eax, [ebp - 0x104]
push 0x5129e8
push eax
call fcn.0045ad50
movzx edx, byte [ebp - 0x215]
add esp, 0xc
xor eax, eax
lea ecx, [edi + 0x8ec]
lea esp, [esp]
movzx esi, byte [ebp + eax - 0x104]
movzx esi, byte [esi + 0x5129e8]
xor esi, edx
mov esi, dword [esi*4 + 0x517c18]
mov dword [ecx - 8], esi
movzx esi, byte [ebp + eax - 0x103]
movzx esi, byte [esi + 0x5129e8]
xor esi, edx
mov esi, dword [esi*4 + 0x517c18]
mov dword [ecx], esi
add eax, 2
add ecx, 0x10
cmp eax, 0x100
jl 0x45bc70
jmp 0x45b85a