Function at 0x479b60
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x30
mov edx, dword [ebp + 0x14]
mov ecx, 1
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x14], ecx
push ebx
mov ebx, 0xffffff
mov dword [ebp - 0x20], ebx
push esi
mov esi, eax
push edi
mov edi, dword [ebp + 8]
test edx, edx
je case.0x479c36.5
cmp edx, dword [ebp + 0x18]
jb case.0x479c36.5
test edi, edi
je case.0x479c36.5
test eax, eax
je case.0x479c36.5
mov eax, dword [ebp + 0xc]
add eax, edi
mov dword [ebp - 0x2c], eax
mov eax, edx
imul eax, dword [ebp + 0x1c]
add eax, esi
mov dword [ebp - 4], eax
cmp edi, dword [ebp - 0x2c]
jae 0x47a72c
test ecx, ecx
je 0x479be3
mov eax, esi
sub eax, dword [ebp + 0x10]
cmp eax, edx
jb 0x479be3
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x1c], 0
mov cl, byte [edi]
mov al, cl
and al, 0xc0
cmp al, 0xc0
je 0x479bf5
movzx ecx, cl
shr ecx, 5
jmp 0x479c03
mov al, cl
movzx ecx, cl
and al, 0xf0
cmp al, 0xf0
je 0x479c03
shr ecx, 4
mov dword [ebp - 0x24], ecx
test ecx, ecx
je 0x47a460
cmp ecx, 0xf0
je 0x47a460
lea eax, [ecx - 1]
mov dword [ebp - 0x1c], 0
cmp eax, 0xfd
ja case.0x479c36.5
movzx eax, byte [eax + 0x47a760]
jmp dword [eax*4 + 0x47a738]
lea eax, [ebp - 0xc]
push eax
push edi
push ecx
call fcn.004790b0
add edi, dword [ebp - 0xc]
mov edx, eax
mov eax, dword [ebp - 0x24]
add esp, 0xc
mov dword [ebp - 0x10], edx
mov dword [ebp + 8], edi
cmp eax, 0xc
je 0x479c65
cmp eax, 0xf6
jne 0x479c83
movzx ebx, byte [edi + 2]
movzx eax, byte [edi + 1]
shl ebx, 8
or ebx, eax
movzx eax, byte [edi]
shl ebx, 8
or ebx, eax
add edi, 3
mov dword [ebp - 0x20], ebx
mov dword [ebp + 8], edi
mov ecx, dword [ebp - 4]
lea eax, [edx + edx*2]
sub ecx, esi
cmp ecx, eax
jb case.0x479c36.5
cmp dword [ebp - 0x14], 0
je 0x479d47
cmp edx, 0x10
jb 0x479cdd
mov eax, ebx
mov ecx, ebx
shr eax, 0x10
mov edi, edx
shr ecx, 8
mov dword [ebp - 0x28], eax
shr edi, 4
mov edx, dword [ebp - 0x28]
mov eax, 0x10
lea esp, [esp]
mov byte [esi], bl
mov byte [esi + 1], cl
mov byte [esi + 2], dl
add esi, 3
dec eax
jne 0x479cc0
mov edx, dword [ebp - 0x10]
sub edx, 0x10
mov dword [ebp - 0x10], edx
dec edi
jne 0x479cb4
mov edi, dword [ebp + 8]
cmp edx, 4
jb 0x479d21
mov eax, ebx
mov dword [ebp + 8], edx
mov ecx, ebx
shr eax, 8
shr ecx, 0x10
shr dword [ebp + 8], 2
mov byte [esi], bl
sub edx, 4
mov byte [esi + 1], al
mov byte [esi + 2], cl
mov byte [esi + 3], bl
mov byte [esi + 4], al
mov byte [esi + 5], cl
mov byte [esi + 6], bl
mov byte [esi + 7], al
mov byte [esi + 8], cl
mov byte [esi + 9], bl
mov byte [esi + 0xa], al
mov byte [esi + 0xb], cl
add esi, 0xc
dec dword [ebp + 8]
jne 0x479cf3
cmp edx, 1
jb 0x47a719
mov eax, ebx
mov ecx, ebx
shr eax, 8
shr ecx, 0x10
mov byte [esi], bl
mov byte [esi + 1], al
mov byte [esi + 2], cl
add esi, 3
dec edx
jne 0x479d34
jmp 0x47a719
cmp edx, 0x10
jb 0x479da7
mov edi, dword [ebp + 0x14]
shr edx, 4
mov dword [ebp - 8], edx
mov edx, esi
mov dword [ebp - 0x24], 0x10
sub edx, edi
inc edx
movzx ecx, byte [edx + 1]
lea edx, [edx + 3]
movzx eax, byte [edx - 3]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx - 4]
shl ecx, 8
or ecx, eax
xor ecx, ebx
mov eax, ecx
mov byte [esi], cl
shr eax, 8
add esi, 3
shr ecx, 0x10
dec dword [ebp - 0x24]
mov byte [edx + edi - 3], al
mov byte [edi + edx - 2], cl
jne 0x479d61
mov edx, dword [ebp - 0x10]
sub edx, 0x10
dec dword [ebp - 8]
mov dword [ebp - 0x10], edx
jne 0x479d55
mov edi, dword [ebp + 8]
cmp edx, 4
mov edx, dword [ebp + 0x14]
jb 0x479ea3
mov ecx, dword [ebp - 0x10]
mov eax, esi
sub eax, edx
inc eax
shr ecx, 2
mov dword [ebp - 8], eax
mov dword [ebp - 0x24], ecx
movzx ecx, byte [eax + 1]
movzx eax, byte [eax]
mov edi, dword [ebp - 8]
shl ecx, 8
or ecx, eax
sub dword [ebp - 0x10], 4
mov eax, dword [ebp - 8]
shl ecx, 8
movzx eax, byte [eax - 1]
or ecx, eax
xor ecx, ebx
mov eax, ecx
mov byte [esi], cl
shr eax, 8
add esi, 0xc
mov byte [edi + edx], al
mov eax, edi
shr ecx, 0x10
mov byte [eax + edx + 1], cl
movzx ecx, byte [eax + 4]
movzx eax, byte [eax + 3]
shl ecx, 8
or ecx, eax
mov eax, edi
shl ecx, 8
movzx eax, byte [eax + 2]
or ecx, eax
mov eax, edi
xor ecx, ebx
mov byte [edx + eax + 2], cl
mov eax, ecx
shr eax, 8
mov byte [edx + edi + 3], al
mov eax, edi
shr ecx, 0x10
mov byte [edx + eax + 4], cl
movzx ecx, byte [eax + 7]
movzx eax, byte [eax + 6]
shl ecx, 8
or ecx, eax
mov eax, edi
shl ecx, 8
movzx eax, byte [eax + 5]
or ecx, eax
mov eax, edi
xor ecx, ebx
mov byte [edx + eax + 5], cl
mov eax, ecx
shr eax, 8
mov byte [edx + edi + 6], al
mov eax, edi
shr ecx, 0x10
mov byte [edx + eax + 7], cl
movzx ecx, byte [eax + 0xa]
movzx eax, byte [eax + 9]
shl ecx, 8
or ecx, eax
mov eax, edi
shl ecx, 8
movzx eax, byte [eax + 8]
or ecx, eax
mov eax, edi
xor ecx, ebx
mov byte [edx + eax + 8], cl
mov eax, ecx
shr eax, 8
mov byte [edx + edi + 9], al
mov eax, edi
shr ecx, 0x10
mov byte [edx + eax + 0xa], cl
add eax, 0xc
dec dword [ebp - 0x24]
mov dword [ebp - 8], eax
jne 0x479dc4
mov edi, dword [ebp + 8]
cmp dword [ebp - 0x10], 1
jb 0x47a71c
mov edi, dword [ebp - 0x10]
mov ecx, esi
sub ecx, edx
movzx edx, byte [ecx + 2]
movzx eax, byte [ecx + 1]
shl edx, 8
or edx, eax
movzx eax, byte [ecx]
shl edx, 8
or edx, eax
xor edx, ebx
mov eax, edx
mov byte [esi], dl
shr edx, 0x10
shr eax, 8
mov byte [esi + 2], dl
mov edx, dword [ebp + 0x14]
mov byte [esi + 1], al
add esi, 3
dec edi
jne 0x479eb0
mov edi, dword [ebp + 8]
jmp 0x47a71c
lea eax, [ebp - 0xc]
push eax
push edi
push ecx
call fcn.004790b0
add edi, dword [ebp - 0xc]
add esp, 0xc
mov ecx, dword [ebp - 4]
mov dword [ebp - 0x10], eax
sub ecx, esi
movzx edx, byte [edi + 2]
movzx eax, byte [edi + 1]
movzx ebx, byte [edi + 5]
shl edx, 8
or edx, eax
shl ebx, 8
movzx eax, byte [edi]
shl edx, 8
or edx, eax
movzx eax, byte [edi + 4]
or ebx, eax
movzx eax, byte [edi + 3]
shl ebx, 8
add edi, 6
or ebx, eax
mov dword [ebp + 8], edi
mov eax, dword [ebp - 0x10]
lea eax, [eax + eax*2]
add eax, eax
cmp ecx, eax
jb case.0x479c36.5
mov ecx, dword [ebp - 0x10]
cmp ecx, 0x10
jb 0x479fb2
mov eax, edx
mov edi, ecx
shr eax, 8
mov dword [ebp - 0x24], eax
mov eax, edx
shr eax, 0x10
mov dword [ebp - 0x28], eax
mov eax, ebx
shr eax, 8
mov dword [ebp - 8], eax
mov eax, ebx
shr eax, 0x10
mov dword [ebp - 0x30], eax
shr edi, 4
mov ecx, dword [ebp - 0x24]
mov eax, 0x10
jmp 0x479f80
mov byte [esi + 1], cl
mov ecx, dword [ebp - 0x28]
mov byte [esi + 2], cl
mov ecx, dword [ebp - 8]
mov byte [esi], dl
mov byte [esi + 4], cl
mov ecx, dword [ebp - 0x30]
mov byte [esi + 5], cl
mov ecx, dword [ebp - 0x24]
mov byte [esi + 3], bl
add esi, 6
dec eax
jne 0x479f80
mov ecx, dword [ebp - 0x10]
sub ecx, 0x10
mov dword [ebp - 0x10], ecx
dec edi
jne 0x479f73
mov edi, dword [ebp + 8]
cmp ecx, 4
jb 0x47a062
mov eax, edx
shr eax, 8
mov dword [ebp + 8], eax
mov eax, edx
shr eax, 0x10
mov dword [ebp - 0x30], eax
mov eax, ebx
shr eax, 8
mov dword [ebp - 8], eax
mov eax, ebx
shr eax, 0x10
mov dword [ebp - 0x24], eax
mov eax, ecx
shr eax, 2
mov dword [ebp - 0x28], eax
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0x30]
mov byte [esi + 1], al
mov eax, dword [ebp - 8]
mov byte [esi + 2], cl
mov byte [esi], dl
mov byte [esi + 4], al
mov eax, dword [ebp - 0x24]
mov byte [esi + 5], al
mov eax, dword [ebp + 8]
mov byte [esi + 3], bl
mov byte [esi + 6], dl
mov byte [esi + 7], al
mov eax, dword [ebp - 8]
mov byte [esi + 8], cl
mov byte [esi + 9], bl
mov byte [esi + 0xa], al
mov eax, dword [ebp - 0x24]
mov byte [esi + 0xb], al
mov eax, dword [ebp + 8]
mov byte [esi + 0xc], dl
mov byte [esi + 0xd], al
mov eax, dword [ebp - 8]
mov byte [esi + 0xe], cl
mov byte [esi + 0xf], bl
mov byte [esi + 0x10], al
mov eax, dword [ebp - 0x24]
mov byte [esi + 0x11], al
mov eax, dword [ebp + 8]
mov byte [esi + 0x12], dl
mov byte [esi + 0x13], al
mov byte [esi + 0x14], cl
mov ecx, dword [ebp - 8]
mov byte [esi + 0x15], bl
mov byte [esi + 0x16], cl
mov ecx, dword [ebp - 0x24]
mov byte [esi + 0x17], cl
add esi, 0x18
mov ecx, dword [ebp - 0x10]
sub ecx, 4
dec dword [ebp - 0x28]
mov dword [ebp - 0x10], ecx
jne 0x479fe6
cmp ecx, 1
jb 0x47a719
mov eax, edx
shr eax, 8
mov dword [ebp + 8], eax
mov eax, edx
shr eax, 0x10
mov dword [ebp - 0x30], eax
mov eax, ebx
shr eax, 8
mov dword [ebp - 0x28], eax
mov eax, ebx
shr eax, 0x10
mov dword [ebp - 0x24], eax
mov eax, dword [ebp + 8]
mov edi, edi
mov byte [esi + 1], al
mov eax, dword [ebp - 0x30]
mov byte [esi + 2], al
mov eax, dword [ebp - 0x28]
mov byte [esi], dl
mov byte [esi + 4], al
mov eax, dword [ebp - 0x24]
mov byte [esi + 5], al
mov eax, dword [ebp + 8]
mov byte [esi + 3], bl
add esi, 6
dec ecx
jne 0x47a090
jmp 0x47a719
lea eax, [ebp - 0xc]
push eax
push edi
push ecx
call fcn.004790b0
add edi, dword [ebp - 0xc]
mov ebx, eax
mov ecx, dword [ebp - 4]
add esp, 0xc
sub ecx, esi
mov dword [ebp - 0x28], ebx
movzx edx, byte [edi + 2]
movzx eax, byte [edi + 1]
shl edx, 8
or edx, eax
movzx eax, byte [edi]
shl edx, 8
add edi, 3
or edx, eax
mov dword [ebp + 8], edi
lea eax, [ebx + ebx*2]
cmp ecx, eax
jb case.0x479c36.5
cmp ebx, 0x10
jb 0x47a135
mov eax, edx
mov ecx, edx
shr eax, 0x10
mov edi, ebx
shr ecx, 8
mov dword [ebp - 0x30], eax
shr edi, 4
mov ebx, dword [ebp - 0x30]
mov eax, 0x10
mov byte [esi], dl
mov byte [esi + 1], cl
mov byte [esi + 2], bl
add esi, 3
dec eax
jne 0x47a118
mov ebx, dword [ebp - 0x28]
sub ebx, 0x10
mov dword [ebp - 0x28], ebx
dec edi
jne 0x47a110
mov edi, dword [ebp + 8]
cmp ebx, 4
jb 0x47a17e
mov eax, edx
mov dword [ebp + 8], ebx
mov ecx, edx
shr eax, 8
shr ecx, 0x10
shr dword [ebp + 8], 2
jmp 0x47a150
mov byte [esi], dl
sub ebx, 4
mov byte [esi + 1], al
mov byte [esi + 2], cl
mov byte [esi + 3], dl
mov byte [esi + 4], al
mov byte [esi + 5], cl
mov byte [esi + 6], dl
mov byte [esi + 7], al
mov byte [esi + 8], cl
mov byte [esi + 9], dl
mov byte [esi + 0xa], al
mov byte [esi + 0xb], cl
add esi, 0xc
dec dword [ebp + 8]
jne 0x47a150
cmp ebx, 1
jb 0x47a719
mov eax, edx
mov ecx, edx
shr eax, 8
shr ecx, 0x10
mov byte [esi], dl
mov byte [esi + 1], al
mov byte [esi + 2], cl
add esi, 3
dec ebx
jne 0x47a191
jmp 0x47a719
lea eax, [ebp - 0xc]
push eax
push edi
push ecx
call fcn.004790b0
add edi, dword [ebp - 0xc]
mov ecx, eax
mov eax, dword [ebp - 0x24]
add esp, 0xc
mov dword [ebp + 8], ecx
cmp eax, 0xd
je 0x47a1c9
cmp eax, 0xf7
jne 0x47a1e4
movzx ebx, byte [edi + 2]
movzx eax, byte [edi + 1]
shl ebx, 8
or ebx, eax
movzx eax, byte [edi]
shl ebx, 8
or ebx, eax
add edi, 3
mov dword [ebp - 0x20], ebx
mov edx, dword [ebp - 0x14]
test edx, edx
je 0x47a222
cmp ecx, 8
jbe 0x47a259
mov al, byte [edi]
inc edi
push 8
push ebx
mov byte [ebp - 0x18], al
push dword [ebp - 0x18]
push dword [ebp - 4]
push esi
call fcn.0047b4c0
mov esi, eax
add esp, 0x14
test esi, esi
je case.0x479c36.5
mov ecx, dword [ebp + 8]
sub ecx, 8
mov dword [ebp + 8], ecx
cmp ecx, 8
ja 0x47a1f0
jmp 0x47a256
cmp ecx, 8
jbe 0x47a259
mov al, byte [edi]
inc edi
push 8
push ebx
mov byte [ebp - 0x18], al
push dword [ebp - 0x18]
push dword [ebp + 0x14]
push dword [ebp - 4]
push esi
call fcn.0047b1c0
mov esi, eax
add esp, 0x18
test esi, esi
je case.0x479c36.5
mov ecx, dword [ebp + 8]
sub ecx, 8
mov dword [ebp + 8], ecx
cmp ecx, 8
ja 0x47a227
mov edx, dword [ebp - 0x14]
test ecx, ecx
je 0x47a719
mov al, byte [edi]
inc edi
mov byte [ebp - 0x18], al
push ecx
push ebx
push dword [ebp - 0x18]
test edx, edx
je 0x47a27e
push dword [ebp - 4]
push esi
call fcn.0047b4c0
add esp, 0x14
jmp 0x47a28d
push dword [ebp + 0x14]
push dword [ebp - 4]
push esi
call fcn.0047b1c0
add esp, 0x18
mov esi, eax
test esi, esi
jne 0x47a719
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
lea eax, [ebp - 0xc]
push eax
push edi
push ecx
call fcn.004790b0
add edi, dword [ebp - 0xc]
mov ebx, eax
add esp, 0xc
cmp ebx, 0x10
jb 0x47a2fb
shr eax, 4
mov dword [ebp + 8], eax
mov edi, edi
mov edx, 0x10
movzx ecx, byte [edi + 2]
movzx eax, byte [edi + 1]
shl ecx, 8
or ecx, eax
movzx eax, byte [edi]
shl ecx, 8
add edi, 3
or ecx, eax
mov eax, ecx
mov byte [esi], cl
shr eax, 8
shr ecx, 0x10
mov byte [esi + 1], al
mov byte [esi + 2], cl
add esi, 3
dec edx
jne 0x47a2c5
sub ebx, 0x10
dec dword [ebp + 8]
jne 0x47a2c0
cmp ebx, 4
jb 0x47a3ba
mov edx, ebx
shr edx, 2
lea esp, [esp]
movzx ecx, byte [edi + 2]
sub ebx, 4
movzx eax, byte [edi + 1]
shl ecx, 8
or ecx, eax
movzx eax, byte [edi]
shl ecx, 8
or ecx, eax
mov byte [esi], cl
mov eax, ecx
shr ecx, 0x10
mov byte [esi + 2], cl
shr eax, 8
mov byte [esi + 1], al
movzx ecx, byte [edi + 5]
movzx eax, byte [edi + 4]
shl ecx, 8
or ecx, eax
movzx eax, byte [edi + 3]
shl ecx, 8
or ecx, eax
mov byte [esi + 3], cl
mov eax, ecx
shr ecx, 0x10
mov byte [esi + 5], cl
shr eax, 8
mov byte [esi + 4], al
movzx ecx, byte [edi + 8]
movzx eax, byte [edi + 7]
shl ecx, 8
or ecx, eax
movzx eax, byte [edi + 6]
shl ecx, 8
or ecx, eax
mov byte [esi + 6], cl
mov eax, ecx
shr ecx, 0x10
mov byte [esi + 8], cl
shr eax, 8
mov byte [esi + 7], al
movzx ecx, byte [edi + 0xb]
movzx eax, byte [edi + 0xa]
shl ecx, 8
or ecx, eax
movzx eax, byte [edi + 9]
shl ecx, 8
add edi, 0xc
or ecx, eax
mov eax, ecx
mov byte [esi + 9], cl
shr eax, 8
shr ecx, 0x10
mov byte [esi + 0xa], al
mov byte [esi + 0xb], cl
add esi, 0xc
dec edx
jne 0x47a310
cmp ebx, 1
jb 0x47a719
movzx ecx, byte [edi + 2]
movzx eax, byte [edi + 1]
shl ecx, 8
or ecx, eax
movzx eax, byte [edi]
shl ecx, 8
add edi, 3
or ecx, eax
mov eax, ecx
mov byte [esi], cl
shr eax, 8
shr ecx, 0x10
mov byte [esi + 1], al
mov byte [esi + 2], cl
add esi, 3
dec ebx
jne 0x47a3c3
jmp 0x47a719
push 8
push ebx
push 3
inc edi
cmp dword [ebp - 0x14], 0
je 0x47a413
push dword [ebp - 4]
push esi
call fcn.0047b4c0
add esp, 0x14
jmp 0x47a28d
push edx
jmp 0x47a281
push 8
push ebx
push 5
jmp 0x47a3fb
mov eax, dword [ebp - 4]
inc edi
sub eax, esi
cmp eax, 3
jb case.0x479c36.5
mov word [esi], 0xffff
mov byte [esi + 2], 0xff
add esi, 3
jmp 0x47a71c
mov eax, dword [ebp - 4]
inc edi
sub eax, esi
cmp eax, 3
jb case.0x479c36.5
mov word [esi], 0
mov byte [esi + 2], 0
add esi, 3
jmp 0x47a71c
lea eax, [ebp - 0xc]
push eax
push edi
push ecx
call fcn.004790b0
add edi, dword [ebp - 0xc]
add esp, 0xc
cmp dword [ebp - 0x14], 0
mov ebx, eax
mov dword [ebp - 0x24], eax
mov dword [ebp + 8], edi
je 0x47a544
cmp dword [ebp - 0x1c], 0
je 0x47a4b0
mov ecx, dword [ebp - 4]
sub ecx, esi
cmp ecx, 3
jb case.0x479c36.5
mov ecx, dword [ebp - 0x20]
mov eax, ecx
shr eax, 8
mov byte [esi + 1], al
mov eax, ecx
shr eax, 0x10
mov byte [esi], cl
mov byte [esi + 2], al
add esi, 3
dec ebx
mov ecx, dword [ebp - 4]
lea eax, [ebx + ebx*2]
sub ecx, esi
cmp ecx, eax
jb case.0x479c36.5
cmp ebx, 0x10
jb 0x47a4f5
mov ecx, ebx
shr ecx, 4
lea ebx, [ebx]
mov eax, 0x10
jmp 0x47a4e0
mov word [esi], 0
mov byte [esi + 2], 0
add esi, 3
dec eax
jne 0x47a4e0
sub ebx, 0x10
dec ecx
jne 0x47a4d0
cmp ebx, 4
jb 0x47a51d
mov eax, ebx
shr eax, 2
nop
mov dword [esi], 0
sub ebx, 4
mov dword [esi + 4], 0
mov dword [esi + 8], 0
add esi, 0xc
dec eax
jne 0x47a500
cmp ebx, 1
jb 0x47a712
jmp 0x47a530
mov word [esi], 0
mov byte [esi + 2], 0
add esi, 3
dec ebx
jne 0x47a530
jmp 0x47a712
cmp dword [ebp - 0x1c], 0
je 0x47a58c
mov eax, dword [ebp - 4]
sub eax, esi
cmp eax, 3
jb case.0x479c36.5
mov ecx, esi
sub ecx, dword [ebp + 0x14]
movzx edx, byte [ecx + 2]
movzx eax, byte [ecx + 1]
shl edx, 8
or edx, eax
movzx eax, byte [ecx]
shl edx, 8
or edx, eax
xor edx, dword [ebp - 0x20]
mov eax, edx
mov byte [esi], dl
shr eax, 8
shr edx, 0x10
mov byte [esi + 1], al
mov byte [esi + 2], dl
add esi, 3
dec ebx
mov dword [ebp - 0x24], ebx
mov ecx, dword [ebp - 4]
lea eax, [ebx + ebx*2]
sub ecx, esi
cmp ecx, eax
jb case.0x479c36.5
cmp ebx, 0x10
jb 0x47a602
mov edi, dword [ebp + 0x14]
mov eax, ebx
shr eax, 4
mov dword [ebp - 0x28], eax
lea esp, [esp]
mov edx, esi
mov ebx, 0x10
sub edx, edi
inc edx
lea ebx, [ebx]
movzx ecx, byte [edx + 1]
lea edx, [edx + 3]
movzx eax, byte [edx - 3]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx - 4]
shl ecx, 8
or ecx, eax
mov eax, ecx
mov byte [esi], cl
shr eax, 8
add esi, 3
shr ecx, 0x10
mov byte [edx + edi - 3], al
mov byte [edx + edi - 2], cl
dec ebx
jne 0x47a5c0
mov ebx, dword [ebp - 0x24]
sub ebx, 0x10
dec dword [ebp - 0x28]
mov dword [ebp - 0x24], ebx
jne 0x47a5b0
mov edi, dword [ebp + 8]
mov edx, dword [ebp + 0x14]
cmp ebx, 4
jb 0x47a6db
mov edi, esi
mov eax, ebx
sub edi, edx
inc edi
shr eax, 2
mov dword [ebp - 0x28], eax
jmp 0x47a620
movzx ecx, byte [edi + 1]
lea edi, [edi + 0xc]
movzx eax, byte [edi - 0xc]
sub ebx, 4
shl ecx, 8
or ecx, eax
movzx eax, byte [edi - 0xd]
shl ecx, 8
or ecx, eax
mov byte [esi], cl
mov eax, ecx
shr ecx, 0x10
add esi, 0xc
mov byte [edi + edx - 0xb], cl
shr eax, 8
mov byte [edi + edx - 0xc], al
movzx ecx, byte [edi - 8]
movzx eax, byte [edi - 9]
shl ecx, 8
or ecx, eax
movzx eax, byte [edi - 0xa]
shl ecx, 8
or ecx, eax
mov byte [edi + edx - 0xa], cl
mov eax, ecx
shr ecx, 0x10
mov byte [edi + edx - 8], cl
shr eax, 8
mov byte [edi + edx - 9], al
movzx ecx, byte [edi - 5]
movzx eax, byte [edi - 6]
shl ecx, 8
or ecx, eax
movzx eax, byte [edi - 7]
shl ecx, 8
or ecx, eax
mov byte [edx + edi - 7], cl
mov eax, ecx
shr ecx, 0x10
mov byte [edx + edi - 5], cl
shr eax, 8
mov byte [edx + edi - 6], al
movzx ecx, byte [edi - 2]
movzx eax, byte [edi - 3]
shl ecx, 8
or ecx, eax
movzx eax, byte [edi - 4]
shl ecx, 8
or ecx, eax
mov eax, ecx
mov byte [edx + edi - 4], cl
shr eax, 8
shr ecx, 0x10
dec dword [ebp - 0x28]
mov byte [edx + edi - 3], al
mov byte [edx + edi - 2], cl
jne 0x47a620
mov edi, dword [ebp + 8]
cmp ebx, 1
jb 0x47a712
mov ecx, esi
sub ecx, edx
movzx edx, byte [ecx + 2]
movzx eax, byte [ecx + 1]
shl edx, 8
or edx, eax
movzx eax, byte [ecx]
shl edx, 8
or edx, eax
mov eax, edx
mov byte [esi], dl
shr edx, 0x10
shr eax, 8
mov byte [esi + 2], dl
mov edx, dword [ebp + 0x14]
mov byte [esi + 1], al
add esi, 3
dec ebx
jne 0x47a6e0
mov dword [ebp - 0x1c], 1
mov edx, dword [ebp + 0x14]
cmp edi, dword [ebp - 0x2c]
jae 0x47a72c
mov ebx, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x14]
jmp 0x479bc8
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret