Function at 0x439d70
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x30
mov esi, ecx
mov eax, dword [0x8e4a3c]
xor eax, esp
mov dword [esp + 0x2c], eax
movzx ecx, byte [ecx + 0x2b]
mov ebp, 6
test cl, 0xa0
je 0x439da7
mov ecx, dword [esp + 0x2c]
xor ecx, esp
call fcn.004c0e60
mov eax, ebp
add esp, 0x30
pop esi
pop edi
pop ebx
pop ebp
ret
mov edi, dword [esi]
lea ebp, [esi + 0x20]
mov eax, dword [edi + 0xc]
mov ebx, 0xb
nop word cs:[eax + eax]
cmp word [eax + ebx*2 - 0x16], 0
lea ebx, [ebx + 1]
jne 0x439dc0
mov eax, dword [ebp + 7]
mov dword [esp + 0x1f], eax
movsd xmm0, qword [ebp]
movsd qword [esp + 0x18], xmm0
test cl, 1
mov dword [esp + 4], esi
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], ebp
jne 0x439e2f
mov dword [esp], 1
test cl, 2
je 0x439e0a
mov ecx, 0x4ec4ec4f
mov eax, ebx
mul ecx
shr edx, 2
inc edx
mov dword [esp], edx
mov edi, dword [esi]
xor ebx, ebx
mov ecx, esi
xor edx, edx
call fcn.0043b210
mov ebp, eax
test eax, eax
je 0x43a126
cmp ebp, 4
jne 0x43a17c
jmp 0x43a3c4
mov dword [esp + 0x14], ebx
mov byte [esp + 8], cl
mov byte [esi + 0x2b], 0x40
mov edx, 1
mov eax, dword [edi + 0xc]
mov ecx, dword [esp + 0x1f]
mov dword [ebp + 7], ecx
movsd xmm0, qword [esp + 0x18]
movsd qword [ebp], xmm0
mov ecx, edx
mov dword [esp], edx
cmp edx, 6
jb 0x439ec5
movzx edx, word [eax]
mov ecx, dword [esp]
test dx, dx
je 0x439ec5
nop word [eax + eax]
mov ebp, 0x10
nop word cs:[eax + eax]
mov ebx, edx
and ebx, 1
movzx edi, dx
lea esi, [ebx + ecx*2]
shr edx, 1
mov ebx, esi
xor ebx, 0x11021
test cx, cx
cmovns ebx, esi
and edx, 1
lea edx, [edx + ebx*2]
shr edi, 2
mov ecx, edx
xor ecx, 0x11021
test bx, bx
cmovns ecx, edx
mov edx, edi
add ebp, 0xfffffffe
jne 0x439e80
movzx edx, word [eax + 2]
add eax, 2
test dx, dx
jne 0x439e70
mov eax, ecx
and al, 0xf
mov edx, eax
or dl, 0x30
add al, 0x37
cmp dl, 0x3a
movzx eax, al
movzx edx, dl
cmovae edx, eax
mov byte [esp + 0x2b], dl
xor eax, eax
cmp ecx, 0x10
jb 0x43a000
mov edx, ecx
shr dl, 4
mov dh, dl
or dh, 0x30
add dl, 0x37
cmp dh, 0x3a
movzx esi, dl
movzx edx, dh
cmovae edx, esi
mov byte [esp + 0x2a], dl
cmp ecx, 0x100
mov edi, dword [esp + 0x10]
jb 0x43a020
mov dl, ch
and dl, 0xf
mov dh, dl
or dh, 0x30
add dl, 0x37
cmp dh, 0x3a
movzx esi, dl
movzx edx, dh
cmovae edx, esi
mov byte [esp + 0x29], dl
cmp ecx, 0x1000
jb 0x43a027
mov edx, ecx
shr edx, 0xc
and dl, 0xf
mov ebx, edx
or bl, 0x30
add dl, 0x37
cmp bl, 0x3a
movzx edx, dl
movzx ebx, bl
cmovae ebx, edx
mov byte [esp + 0x28], bl
cmp ecx, 0x10000
jb 0x43a02e
mov edx, ecx
shr edx, 0x10
and dl, 0xf
mov ebx, edx
or bl, 0x30
add dl, 0x37
cmp bl, 0x3a
movzx edx, dl
movzx ebx, bl
cmovae ebx, edx
mov byte [esp + 0x27], bl
cmp ecx, 0x100000
mov esi, dword [esp + 4]
mov ebp, dword [esp + 0xc]
jb 0x43a0e3
mov edx, ecx
shr edx, 0x14
and dl, 0xf
mov ebx, edx
or bl, 0x30
add dl, 0x37
cmp bl, 0x3a
movzx edx, dl
movzx ebx, bl
cmovae ebx, edx
mov byte [esp + 0x26], bl
xor edx, edx
cmp ecx, 0x1000000
jb 0x43a0ef
shr ecx, 0x18
and cl, 0xf
mov ebx, ecx
or bl, 0x30
add cl, 0x37
cmp bl, 0x3a
movzx ecx, cl
movzx ebx, bl
cmovae ebx, ecx
mov byte [esp + 0x25], bl
mov cl, 1
jmp 0x43a04a
mov edx, 6
xor ecx, ecx
mov esi, dword [esp + 4]
mov edi, dword [esp + 0x10]
jmp 0x43a046
mov edx, 5
jmp 0x43a040
mov edx, 4
jmp 0x43a040
mov edx, 3
nop word cs:[eax + eax]
xor ecx, ecx
mov esi, dword [esp + 4]
mov ebp, dword [esp + 0xc]
mov byte [esp + edx + 0x24], 0x7e
test cl, cl
jne 0x43a06e
xor eax, eax
nop word cs:[eax + eax]
cmp byte [ebp + eax], 0x20
je 0x43a06e
inc eax
cmp edx, eax
jne 0x43a060
mov eax, edx
test al, 1
jne 0x43a080
mov ecx, eax
cmp eax, 7
jne 0x43a0bc
jmp 0x43a092
movzx ebx, byte [esp + edx + 0x24]
inc edx
lea ecx, [eax + 1]
mov byte [ebp + eax], bl
cmp eax, 7
jne 0x43a0bc
mov ecx, esi
call fcn.0043bac0
test eax, eax
jne 0x43a0fb
mov edx, dword [esp]
inc edx
cmp edx, 0x64
jne 0x439e40
jmp 0x43a3c4
mov byte [esi + ecx + 0x21], al
add ecx, 2
cmp ecx, 8
je 0x43a092
mov al, 0x20
cmp edx, 7
ja 0x43a0d0
mov ah, byte [esp + edx + 0x24]
inc edx
jmp 0x43a0d2
mov ah, 0x20
mov byte [esi + ecx + 0x20], ah
cmp edx, 7
ja 0x43a0b0
movzx eax, byte [esp + edx + 0x24]
inc edx
jmp 0x43a0b0
mov edx, 2
xor ecx, ecx
jmp 0x43a04a
mov edx, 1
xor ecx, ecx
jmp 0x43a04a
mov ebp, 7
cmp dword [esp], 0x64
movzx ecx, byte [esp + 8]
mov ebx, dword [esp + 0x14]
je 0x439d92
mov ebp, eax
cmp eax, 4
jne 0x439d92
mov byte [esi + 0x2b], cl
jmp 0x439dee
mov dword [esp + 8], edi
jmp 0x43a14e
inc ebx
mov edi, ebx
cmp ebx, dword [esp]
je 0x43a184
mov ecx, esi
mov edx, 1
call fcn.0043b770
mov ebx, edi
test eax, eax
mov edi, dword [esp + 8]
jne 0x43a171
mov edx, dword [esi + 0x18]
mov ecx, edi
call fcn.0043a470
test eax, eax
jne 0x43a171
mov eax, dword [esi + 0x1c]
movzx eax, byte [eax]
cmp eax, 0xe5
je 0x43a130
xor edi, edi
test eax, eax
je 0x43a130
jmp 0x43a138
mov ebp, eax
cmp ebp, 4
je 0x43a3c4
test ebp, ebp
jne 0x439d92
dec dword [esp]
mov edi, dword [esp + 0x10]
je 0x43a373
mov edx, dword [esi + 0x10]
mov eax, dword [esp]
shl eax, 5
sub edx, eax
mov ecx, esi
call fcn.0043b210
mov ebp, eax
test eax, eax
jne 0x439d92
movzx eax, byte [esi + 0x20]
ror al, 1
add al, byte [esi + 0x21]
ror al, 1
add al, byte [esi + 0x22]
ror al, 1
add al, byte [esi + 0x23]
ror al, 1
add al, byte [esi + 0x24]
ror al, 1
add al, byte [esi + 0x25]
ror al, 1
add al, byte [esi + 0x26]
ror al, 1
add al, byte [esi + 0x27]
ror al, 1
add al, byte [esi + 0x28]
ror al, 1
add al, byte [esi + 0x29]
ror al, 1
add al, byte [esi + 0x2a]
mov byte [esp + 0x14], al
mov edi, dword [esp + 0x10]
nop dword [eax + eax]
mov edx, dword [esi + 0x18]
mov ecx, edi
call fcn.0043a470
test eax, eax
jne 0x43a3ce
mov ebx, dword [esp]
movzx eax, bl
lea ecx, [eax + eax*4]
mov edx, edi
lea edi, [ecx + ecx*4]
add edi, eax
mov eax, ebx
mov byte [esp + 8], bl
mov ecx, dword [esi + 0x1c]
mov ebp, dword [edx + 0xc]
movzx eax, byte [esp + 0x14]
mov byte [ecx + 0xd], al
mov word [ecx + 0xb], 0xf
mov word [ecx + 0x1a], 0
lea ebx, [edi + ebp]
add ebx, 0xffffffe6
mov edx, 1
xor eax, eax
cmp ax, 0xffff
je 0x43a2a1
nop word cs:[eax + eax]
movzx eax, byte [edx + 0x4fdb4b]
movzx esi, word [ebx + edx*2 - 2]
mov word [ecx + eax], si
cmp si, 1
mov eax, 0
sbb eax, eax
or eax, esi
cmp edx, 0xd
je 0x43a2a4
cmp ax, 0xffff
je 0x43a2ca
movzx eax, byte [edx + 0x4fdb4c]
movzx esi, word [ebx + edx*2]
mov word [ecx + eax], si
cmp si, 1
mov eax, 0
sbb eax, eax
or eax, esi
add edx, 2
mov esi, dword [esp + 4]
cmp ax, 0xffff
jne 0x43a250
dec edx
jmp 0x43a2ce
cmp ax, 0xffff
mov esi, dword [esp + 4]
je 0x43a34c
add ebp, edi
cmp word [ebp + edx*2 - 0x1a], 0
je 0x43a34c
movzx eax, byte [esp + 8]
jmp 0x43a353
mov esi, dword [esp + 4]
movzx eax, byte [edx + 0x4fdb4c]
mov word [ecx + eax], 0xffff
lea edi, [edx + 1]
cmp edi, 0xd
je 0x43a34c
mov ebx, edx
neg ebx
and ebx, 3
je 0x43a301
nop dword [eax]
movzx eax, byte [edi + 0x4fdb4c]
mov word [ecx + eax], 0xffff
inc edi
dec ebx
jne 0x43a2f0
add edx, 0xfffffff7
cmp edx, 3
jb 0x43a34c
nop dword [eax]
movzx eax, byte [edi + 0x4fdb4c]
mov word [ecx + eax], 0xffff
movzx eax, byte [edi + 0x4fdb4d]
mov word [ecx + eax], 0xffff
movzx eax, byte [edi + 0x4fdb4e]
mov word [ecx + eax], 0xffff
movzx eax, byte [edi + 0x4fdb4f]
mov word [ecx + eax], 0xffff
add edi, 4
cmp edi, 0xd
jne 0x43a310
movzx eax, byte [esp + 8]
or al, 0x40
mov byte [ecx], al
mov edi, dword [esp + 0x10]
mov byte [edi + 3], 1
mov ecx, esi
xor edx, edx
call fcn.0043b770
test eax, eax
jne 0x43a3ce
dec dword [esp]
jne 0x43a1f0
mov edx, dword [esi + 0x18]
mov ecx, edi
call fcn.0043a470
mov ebp, eax
test eax, eax
jne 0x439d92
mov eax, dword [esi + 0x1c]
xorps xmm0, xmm0
movups xmmword [eax + 0x10], xmm0
movups xmmword [eax], xmm0
mov eax, dword [esi + 0x1c]
mov edx, dword [esp + 0xc]
mov ecx, dword [edx + 7]
mov dword [eax + 7], ecx
movsd xmm0, qword [edx]
movsd qword [eax], xmm0
movzx eax, byte [esi + 0x2b]
and al, 0x18
mov ecx, dword [esi + 0x1c]
mov byte [ecx + 0xc], al
mov eax, dword [esp + 0x10]
mov byte [eax + 3], 1
xor ebp, ebp
jmp 0x439d92
mov ebp, 7
jmp 0x439d92
mov ebp, eax
jmp 0x439d92