Function at 0x479880
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x124
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
mov ebx, dword [eax + 4]
xor edx, edx
mov edi, 1
cmp ebx, edx
mov dword [ebp - 4], edi
mov dword [ebp - 0x28], edx
mov dword [ebp - 0x2c], edx
mov dword [ebp - 8], edx
jne 0x4798b2
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebx + 0x94]
mov esi, dword [ebx + 0x48]
cmp eax, edx
mov dword [ebp - 0x24], esi
jle 0x47a152
mov eax, dword [esi + 0xc]
cmp eax, 1
jle 0x479973
lea edi, [eax - 1]
mov eax, dword [esi + 0x4c]
test eax, 0x10000000
mov dword [esi + 0xc], edi
je 0x4799c2
test eax, 0x20000000
je 0x4799c2
mov ecx, dword [ebp + 0xc]
movsx ecx, byte [ecx]
cmp ecx, 2
jne 0x479952
mov edx, dword [ebp - 8]
test edx, edx
jne 0x479952
cmp dword [ebp - 4], 1
jg 0x479952
or eax, 0x20000000
mov dword [esi + 0x4c], eax
mov eax, dword [esi + 0x4c]
and eax, 0xbfffffff
push ebx
mov dword [esi + 0x4c], eax
call fcn.0048e6f0
add esp, 4
mov dword [ebp - 0x20], eax
test eax, eax
jne 0x47a1e7
mov eax, dword [esi + 0x4c]
mov dword [esi + 0xc], edi
test eax, 0x10000000
je 0x479948
test eax, 0x20000000
jne 0x47a252
or eax, 0x20000000
mov dword [esi + 0x4c], eax
jmp 0x4799c2
and eax, 0xdfffffff
cmp ecx, 1
mov dword [esi + 0x4c], eax
jne 0x479911
mov ecx, dword [ebp - 8]
test ecx, ecx
jne 0x479911
cmp dword [ebp - 4], 1
jg 0x479911
or eax, 0x40000000
jmp 0x479919
mov eax, dword [ebp + 0xc]
movsx ecx, byte [eax]
cmp ecx, 2
jne 0x4799f4
test edx, edx
jne 0x4799f4
cmp edi, 1
jg 0x4799f4
or dword [esi + 0x4c], 0x20000000
mov eax, dword [esi + 0x4c]
and eax, 0xbfffffff
push ebx
mov dword [esi + 0x4c], eax
call fcn.0048e6f0
add esp, 4
mov dword [ebp - 0x20], eax
test eax, eax
jne 0x47a1e7
mov eax, dword [esi + 0x4c]
test eax, 0x10000000
je 0x4799c2
test eax, 0x20000000
jne 0x47a25f
movsx eax, byte [esi + 0x48]
add eax, 0xfffffffe
cmp eax, 0x1a
ja 0x479b2e
xor ecx, ecx
mov cl, byte [eax + 0x47a550]
jmp dword [ecx*4 + 0x47a538]
mov eax, dword [esi + 0x4c]
and eax, 0xdfffffff
cmp ecx, 1
mov dword [esi + 0x4c], eax
jne 0x47998e
test edx, edx
jne 0x47998e
cmp edi, ecx
jg 0x47998e
or eax, 0x40000000
jmp 0x479996
mov eax, dword [ebp - 4]
mov edx, 1
cmp eax, edx
jle 0x479bf0
mov eax, dword [ebp - 0xac]
cmp eax, 8
je 0x479b77
cmp eax, 7
je 0x479b77
mov ecx, dword [ebp - 0x10]
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 8]
add edx, ecx
test eax, eax
mov dword [ebp - 0x1c], edx
je 0x479be8
mov eax, dword [ebp - 4]
mov dword [ebp - 8], 0
dec eax
mov dword [ebp - 4], eax
jmp 0x479d88
mov eax, dword [ebp - 8]
xor ecx, ecx
cmp eax, ecx
je 0x479b9a
mov edx, dword [ebp - 0x10]
mov edi, dword [ebp - 0x1c]
mov eax, dword [ebp - 4]
add edi, edx
dec eax
mov dword [ebp - 0x1c], edi
mov dword [ebp - 4], eax
mov dword [ebp - 8], ecx
jmp 0x479d88
cmp dword [ebp - 0x2c], ecx
je 0x479ba2
mov dword [ebp - 8], edx
mov edx, dword [ebp - 0xa8]
xor eax, eax
cmp edx, ecx
jle 0x479bc8
mov edi, dword [ebp + eax*4 - 0x4c]
sub edi, dword [ebp + eax*4 - 0xe4]
imul edi, dword [ebp + eax*4 - 0xc8]
add ecx, edi
inc eax
cmp eax, edx
jl 0x479bae
mov eax, dword [ebp - 0xa4]
lea edx, [ebp - 0x4c]
add eax, ecx
lea ecx, [ebp - 0xac]
push ecx
push edx
push 0
mov dword [ebp - 0x1c], eax
call fcn.00484f50
add esp, 0xc
dec dword [ebp - 4]
jmp 0x479d88
lea eax, [ebp - 0xac]
lea ecx, [ebp - 0x1c]
push eax
lea edx, [ebp + 0x10]
push ecx
lea eax, [ebp + 0xc]
push edx
push eax
call fcn.0048cda0
add esp, 0x10
mov dword [ebp - 0x20], eax
test eax, eax
jne 0x47a373
mov edi, dword [ebp - 0x14]
mov ecx, 2
cmp edi, ecx
je 0x47a3e0
mov edx, 1
cmp edi, edx
je 0x47a152
mov eax, dword [ebp - 0xac]
cmp eax, 8
je 0x479cb3
cmp eax, 7
je 0x479cb3
cmp eax, 5
je 0x479c6a
cmp eax, 6
je 0x479c6a
cmp edi, 0x1c
jl 0x479c62
cmp edi, 0x2c
jg 0x479c62
mov dword [ebp - 4], ecx
mov dword [ebp - 8], edx
jmp 0x479d88
mov dword [ebp - 4], edx
jmp 0x479d88
mov ecx, dword [ebp - 0x10]
test ecx, ecx
je 0x479c79
mov eax, dword [ebp - 0x18]
cdq
idiv ecx
jmp 0x479c8d
mov eax, dword [ebx + 0x11c]
mov ecx, dword [ebp - 0x18]
and eax, 0x100
neg eax
sbb eax, eax
and eax, ecx
mov ecx, dword [ebx + 0x11c]
mov dword [ebp - 4], eax
test ch, 1
je 0x479d88
test eax, eax
jne 0x479d88
mov dword [ebp - 0x28], 1
jmp 0x479d8f
mov ecx, dword [ebp - 0x10]
test ecx, ecx
je 0x479cd4
mov eax, dword [ebp - 0x18]
cdq
idiv ecx
mov edx, 1
mov dword [ebp - 4], eax
test eax, eax
jne 0x479cf6
mov dword [ebp - 0x28], edx
jmp 0x479d8f
mov eax, dword [ebx + 0x11c]
test ah, 1
je 0x479ce7
mov eax, dword [ebp - 0x18]
mov dword [ebp - 4], eax
jmp 0x479cc8
mov dword [ebp - 4], 0
mov dword [ebp - 0x28], edx
jmp 0x479d8f
cmp edi, 0x1c
jl 0x479d08
cmp edi, 0x2c
jg 0x479d08
mov dword [ebp - 0x2c], edx
mov dword [ebp - 8], edx
jmp 0x479d0f
mov dword [ebp - 0x2c], 0
mov edx, dword [ebp - 0xa8]
xor eax, eax
test edx, edx
jle 0x479d46
lea ecx, [ebp - 0x98]
mov edx, dword [ecx - 4]
mov edi, dword [ecx]
mov dword [ebp + eax*4 - 0xe4], edx
mov dword [ebp + eax*4 - 0xc8], edi
mov dword [ebp + eax*4 - 0x4c], edx
mov edx, dword [ebp - 0xa8]
inc eax
add ecx, 0xc
cmp eax, edx
jl 0x479d21
xor eax, eax
xor ecx, ecx
test edx, edx
jle 0x479d68
mov edi, dword [ebp + eax*4 - 0x4c]
sub edi, dword [ebp + eax*4 - 0xe4]
imul edi, dword [ebp + eax*4 - 0xc8]
add ecx, edi
inc eax
cmp eax, edx
jl 0x479d4e
mov edx, dword [ebp - 0xa4]
lea eax, [ebp - 0xac]
add edx, ecx
lea ecx, [ebp - 0x4c]
push eax
push ecx
push 0
mov dword [ebp - 0x1c], edx
call fcn.00484f50
add esp, 0xc
mov eax, dword [ebp - 0x28]
test eax, eax
je 0x479dab
mov eax, dword [esi + 0xc]
test eax, eax
jne 0x479da2
mov dword [esi + 0xc], 2
jmp 0x47a0e9
inc eax
mov dword [esi + 0xc], eax
jmp 0x47a0e9
mov ecx, dword [esi + 0x4c]
mov edx, dword [esi]
and ecx, 0xf7ffffff
mov dword [esi + 0x4c], ecx
mov eax, dword [edx + 0x11c]
test eax, 0x10000
je 0x479de7
movsx eax, byte [esi + 0x48]
mov ecx, dword [eax*4 + 0x4dad10]
test ecx, ecx
je 0x479de7
mov eax, dword [ebp - 0x14]
movsx ecx, byte [ecx + eax]
test ecx, ecx
je 0x479dea
mov eax, ecx
mov dword [ebp - 0x14], eax
jmp 0x479dea
mov eax, dword [ebp - 0x14]
movsx ecx, byte [esi + 0x48]
lea edi, [ecx - 0x13]
cmp edi, 0x20
ja 0x479fa6
xor ecx, ecx
mov cl, byte [edi + 0x47a59c]
jmp dword [ecx*4 + 0x47a56c]
test byte [esi + 0x50], 2
je 0x47a04e
mov eax, dword [esi + 0x38]
cmp eax, 0x40
ja 0x479fca
lea edi, [ebp - 0x124]
mov dword [ebp - 0x30], 0
mov dword [ebp - 0xc], edi
jmp 0x479fe7
lea edx, [ebp - 0xc]
push edx
push 0
push eax
call fcn.0047e3c0
add esp, 0xc
test eax, eax
jne 0x47a1d3
mov edi, dword [ebp - 0xc]
mov dword [ebp - 0x30], edi
mov ecx, dword [esi + 0x38]
mov eax, 0x20202020
mov edx, ecx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [ebp - 0xc]
sbb dl, ah
push eax
cmp ebx, dword [edi - 0x5d]
in al, dx
and ah, al
or edx, esi
mov dh, 0x9a
mov bh, 0xe8
push cs
jb 0x47a02c
invalid
std
imul eax, dword [edx + 0x62997efc], 0x39358fb1
pushfd
pop eax
push 0x8a25b936
sbb ebp, dword ss:[esp + esi + 0x5f]
pushfd
mov ebx, 0x9cb25137
fadd dword [edx + 0x72]
lodsb al, byte ds:[esi]
invalid
lahf
mov eax, 0xe7b487eb
dec edx
clc
and al, 0x45
push ebp
lock xor byte [edi], ah
je 0x47a07e
jmp 0x479fd9
shr byte [esi + ecx*8 - 0x30], 0x5d
mov dword [0x649f688b], eax
lahf
xchg edi, eax
add byte [edi - 0x17], ch
dec eax
lahf
mov dh, 0xd2
out 0x1b, al
sbb al, 0xf1
adc dword [esi - 0x79], esi
sbb dh, al
adc eax, 0x97173836
xchg edi, eax
loop 0x47a0ec
and byte [edx + 7], bl
jge 0x47a0d8
mov ah, byte [ebx + 0x5e87a188]
jp 0x47a0d2
jns 0x47a050
cli
invalid
push ebx
cmp al, 0x69
out dx, eax
fisub word [edi + 0x27]
push edx
sbb byte [edx - 0x53], ah
call 0xa703387
out dx, al
push ebp
jecxz 0x47a034
rcr dword [edx - 0x504673fa], 1
lcall 0x8f8b, 0x14f7cef
jno 0x47a0b4
mov ecx, 0x7cef9aaf
dec edi
add dword [ebx - 0x110a8e71], ecx
out dx, al
salc
mov dl, byte [ebx + 0x57d66d21]
push edi
pop esi
pop edx
insd dword es:[edi], dx
mov bh, byte [esi + 0x30]
jmp 0x47a0f5
pop edx
or ebx, esp
lock adc dword [ebp + 0x32], edi
push ds
xor bl, byte [esi]
pop edi
jmp [edi - 0x79]
pop ebx
pushal
aad 0x7a
das
jp 0x47a11d
pop ss
push edi
je 0x47a09b
push esi
cli
inc edx
mov edx, dword [ecx - 0x313ac3fc]
mov ebx, 0x8affa8dc
pop es
invalid
sub bl, byte [ebx + 0xd52deb]
cmp eax, 0x63faeb9c
mov dword [ecx], esp
mov ecx, 0xe4877f90
cmp esi, ecx
sub al, byte [edx]
xor byte [ebx], 0xd8
add al, 0xfe
jp 0x47a0c6
invalid
sub ebx, dword [edi - 0x2f42edc5]
ret 0x489
or byte [ecx + edi*8 - 0x72], ch
iretd
aad 0x44
mov al, 0xed
push 0xfffffffffffffffe
dec esp
bound ecx, qword [eax + 0x302213a7]
push edx
dec ebx
xor al, 0xf8
add bh, ch
mov edi, 0x48cf4696
cmp esi, dword [esi]
mov esi, dword cs:[ecx]
and al, 0x94
xor byte [ebx - 0x35], bh
push ss
inc esi
add byte [ebx - 0x72], ah
aaa
sub dword [edi + 0x4bd81318], esi
xchg esi, eax
inc esi
iretd
mov bh, 0x18
adc ebx, eax
dec ebx
js 0x47a242
inc ecx
invalid
sbb esp, ecx
movsb byte es:[edi], byte [esi]
aas
clc
jns 0x47a1d3
push esp
jnp 0x47a1c8
inc edi
jmp 0x47a205
sub bl, byte [ecx - 0x1a]
jno 0x47a210
sahf
xchg byte ds:[eax], al
sub eax, dword [esi - 0x6b494f1d]
cmpsd dword [esi], dword es:[edi]
mov ebx, 0xae89e790
jne 0x47a28b
in eax, 0x9c
mov ecx, dword [eax]
fiadd dword [edx - 0x67]
push es
stosd dword es:[edi], eax
arpl word [ebx - 0x4d], cx
push 0x77152bfd
shl dword [ebx], 0x9d
invalid
invalid
out dx, eax
outsb dx, byte [esi]
xor eax, 0xe21a2212
fst dword [edx + 0x33]
or al, 0x27
daa
mov ah, 0x5a
cwde
pop edx
xor al, 0x1e
js 0x47a26a
sub al, 0x2c
xchg esp, eax
jbe 0x47a1fc
mov word [edx], cs
jg 0x47a2f4
cmp al, 0x35
push ebp
mov ecx, 0x46ebc122
mov al, byte [0x8ba92662]
movsb byte es:[edi], byte [esi]
imul ecx, dword [ebx], 0xd181706c
aam 0xf5
or ebp, dword [eax + esi*2 - 0x7f]
shl dword [esi], 1
aam 0xf5
adc ah, bl
jg 0x47a21a
xor al, 0x75
push edi
push esp
ljmp 0x7dff
cmpsd dword [esi], dword es:[edi]
sbb edi, ecx
les esi, [ecx + ebx*8]
out dx, eax
in eax, dx
sbb esp, dword [esi + 0x12]
and byte [eax + ebx*8 + 0x5805524a], dh
fnstenv [eax + 0x46]
daa
call 0x509fe18f
ficomp dword [ecx + 0x49]
and dword [ebx + esi], edi
xchg esi, eax
mul byte [ebp + 0x5cfa4ac6]
xchg esi, eax
push ss
or al, 0x64
shl dword [esi], cl
sal byte [edx + 0x3d], 0x24
mov ah, 0xb7
xchg edx, eax
cmpsd dword [esi], dword es:[edi]
pop ecx
adc esp, ebx
mov dword [ecx - 0x5678a740], eax
popal
lahf
mov bl, 0
push ebx
mov al, byte [0xa6b97ebe]
jmp 0x63b0d50c
push ss
and ecx, dword [eax]
mov eax, 0xa0536c4b
test dword [ecx + 0x47], edi
jl 0x47a3d3
xchg edx, eax
mov dl, 0x99
dec ebp
sub bl, bh
sub ebp, dword [edx - 0x2921c04a]
das
popal
movsb byte es:[edi], byte [esi]
cmc
in eax, 0x55
shr ah, 1
jg 0x47a405
or byte [esi], al
mov al, bl
shr dl, 1
mov cl, 0xba
or dword [edi - 0x4fde2bb9], esi
imul ebx, dword [edi], 0xe8e385a
invalid
xor al, 0x2f
push ds
add ecx, dword [edi - 0x3a26691e]
das
jns 0x47a44b
or ebp, dword fs:[edx - 0x25]
or ebp, dword fs:[edx - 0x25]
sub ah, byte [eax - 0x3e]
iretd
out dx, al
mov byte [0xaa28755e], al
mov byte [0xb7d49028], al
dec esp
mov ecx, 0x3f557a31
clc
stosd dword es:[edi], eax
popfd
push esp
in eax, dx
and dword fs:[edi + 0x54], esp
sbb ebx, eax
inc ecx
outsd dx, dword [esi]
in eax, dx
cmp al, 0xc7
jmp 0x47a442