Function at 0x10027c20
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x1304
call fcn.100c66e0
mov eax, dword [0x100ff900]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
mov esi, ecx
mov eax, dword [esi + 0x110]
mov ecx, dword [eax + 0x18c]
xor edx, edx
test ecx, ecx
sete dl
test dl, 1
je 0x10027c68
mov eax, 0x19
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100c5f50
mov esp, ebp
pop ebp
ret 8
mov eax, dword [esi + 0x18]
push ebx
xor ebx, ebx
mov dword [0x100fecc0], eax
mov ecx, dword [esi + 0x110]
push ebx
push ebx
mov dword [esi + 0x44], 0x10
mov dword [esi + 0x10c], ebx
mov dword [esi + 0x1c], ebx
mov dword [esi + 0x20], ebx
call fcn.10072d00
cmp eax, ebx
jne 0x10028ff6
mov ecx, dword [esi + 0x110]
mov edx, dword [ecx]
mov edx, dword [edx + 0xc]
lea eax, [ebp - 0x126c]
push eax
call edx
cmp eax, ebx
jne 0x10028ff6
mov ecx, dword [esi + 0x110]
push ebx
push 0x2c
call fcn.10072d00
cmp eax, ebx
jne 0x10028ff6
mov ecx, dword [esi + 0x110]
push ebx
push 4
push 1
lea eax, [ebp - 0x1264]
push eax
call fcn.100726c0
cmp eax, ebx
jne 0x10028ff6
push 4
lea ecx, [ebp - 0x1264]
push str.SCRM
push ecx
call fcn.10076cd0
add esp, 0xc
test eax, eax
je 0x10027d1b
lea eax, [ebx + 0x19]
pop ebx
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100c5f50
mov esp, ebp
pop ebp
ret 8
fld dword [0x100dcb38]
push edi
xor eax, eax
lea edi, [esi + 0x328]
mov ecx, 0x40
rep stosd dword es:[edi], eax
fstp dword [esi + 0x878]
fld1
fstp dword [esi + 0x874]
mov ecx, dword [esi + 0x110]
push ebx
lea edi, [esi + 0x590]
push ebx
mov dword [esi + 0x218], ebx
mov dword [esi + 0x508], 6
mov dword [esi + 0x50c], 0x7d
mov byte [edi], 0x40
mov dword [esi + 0x598], ebx
mov dword [esi + 0x870], ebx
call fcn.10072d00
cmp eax, ebx
jne 0x10028ff5
mov ecx, dword [esi + 0x110]
push ebx
push 0x1c
lea eax, [esi + 0x118]
push 1
push eax
call fcn.100726c0
cmp eax, ebx
jne 0x10028ff5
mov ecx, dword [esi + 0x110]
push ebx
call fcn.10072be0
cmp eax, ebx
jne 0x10028ff5
mov ecx, dword [esi + 0x110]
push ebx
push 0x20
call fcn.10072d00
cmp eax, ebx
jne 0x10028ff5
mov ecx, dword [esi + 0x110]
lea edx, [ebp - 0x125c]
push edx
call fcn.10072c40
cmp eax, ebx
jne 0x10028ff5
mov ecx, dword [esi + 0x110]
lea eax, [esi + 0x5a4]
push eax
call fcn.10072ca0
cmp eax, ebx
jne 0x10028ff5
mov ecx, dword [esi + 0x110]
lea eax, [ebp - 0x1250]
push eax
call fcn.10072c40
cmp eax, ebx
jne 0x10028ff5
lea ecx, [ebp - 0x1238]
push ecx
mov ecx, dword [esi + 0x110]
call fcn.10072c40
cmp eax, ebx
jne 0x10028ff5
test byte [ebp - 0x1238], 0x40
je 0x10027e4b
mov edx, 1
mov word [esi + 0x886], dx
jmp 0x10027e54
xor eax, eax
mov word [esi + 0x886], ax
lea ecx, [ebp - 0x1238]
push ecx
mov ecx, dword [esi + 0x110]
call fcn.10072c40
cmp eax, ebx
jne 0x10028ff5
movzx edx, word [ebp - 0x1238]
and edx, 0xfff
cmp edx, 0x12c
jne 0x10027e8f
mov eax, 1
mov word [esi + 0x886], ax
mov ecx, dword [esi + 0x110]
push ebx
push 0x2c
call fcn.10072d00
cmp eax, ebx
jne 0x10028ff5
push ebx
push 4
push 1
lea ecx, [ebp - 0x1264]
push ecx
mov ecx, dword [esi + 0x110]
call fcn.100726c0
cmp eax, ebx
jne 0x10028ff5
push 4
lea edx, [ebp - 0x1264]
push str.SCRM
push edx
call fcn.10076cd0
add esp, 0xc
test eax, eax
je 0x10027ef6
pop edi
pop ebx
mov eax, 0x19
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100c5f50
mov esp, ebp
pop ebp
ret 8
mov ecx, dword [esi + 0x110]
push edi
call fcn.10072be0
cmp eax, ebx
jne 0x10028ff5
mov ecx, dword [esi + 0x110]
lea eax, [esi + 0x508]
push eax
call fcn.10072c10
cmp eax, ebx
jne 0x10028ff5
mov ecx, dword [esi + 0x110]
lea eax, [esi + 0x50c]
push eax
call fcn.10072bb0
cmp eax, ebx
jne 0x10028ff5
mov ecx, dword [esi + 0x110]
lea eax, [ebp - 0x1255]
push eax
call fcn.10072be0
cmp eax, ebx
jne 0x10028ff5
mov ecx, dword [esi + 0x110]
push ebx
call fcn.10072be0
cmp eax, ebx
jne 0x10028ff5
lea ecx, [ebp - 0x125d]
push ecx
mov ecx, dword [esi + 0x110]
call fcn.10072be0
cmp eax, ebx
jne 0x10028ff5
mov ecx, dword [esi + 0x110]
push ebx
push 0x40
call fcn.10072d00
cmp eax, ebx
jne 0x10028ff5
or eax, 0xffffffff
mov dword [esi + 0x324], ebx
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x10], eax
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], eax
xor edi, edi
nop
mov ecx, dword [esi + 0x110]
lea edx, [ebp - 0x125e]
push edx
call fcn.10072be0
cmp eax, ebx
jne 0x10028ff5
mov al, byte [ebp - 0x125e]
cmp al, 0x10
jae 0x10028015
mov cl, byte [esi + 0x324]
mov byte [ebp + edi - 0x24], cl
cmp al, 7
ja 0x10028001
mov edx, dword [esi + 0x324]
mov byte [esi + edx + 0x510], bl
jmp 0x1002800f
mov eax, dword [esi + 0x324]
mov byte [esi + eax + 0x510], 0xff
inc dword [esi + 0x324]
inc edi
cmp edi, 0x20
jl 0x10027fc0
push ebx
push 1
push 4
lea edi, [esi + 0x324]
push edi
push str.Number_of_channels
push 9
mov ecx, esi
call fcn.10003b80
cmp eax, ebx
jne 0x10028ff5
xor ebx, ebx
cmp dword [edi], ebx
jle 0x1002809a
lea eax, [esi + 0x328]
mov dword [ebp - 0x1230], eax
nop
mov ecx, dword [0x100fecc0]
mov ecx, dword [ecx + 4]
push 0
push 0x6e2
push 0x100dcebc
push 0x2f8
call fcn.10075b20
test eax, eax
je 0x1002807c
mov ecx, eax
call fcn.1001a570
jmp 0x1002807e
xor eax, eax
mov edx, dword [ebp - 0x1230]
mov dword [edx], eax
test eax, eax
je 0x10028fc4
add dword [ebp - 0x1230], 4
inc ebx
cmp ebx, dword [edi]
jl 0x10028050
mov ecx, dword [esi + 0x110]
push 0
push 0x60
call fcn.10072d00
test eax, eax
jne 0x10028ff5
mov ecx, dword [esi + 0x110]
push eax
movzx eax, word [ebp - 0x125c]
push eax
mov ebx, 1
push ebx
lea edi, [esi + 0x224]
push edi
call fcn.100726c0
xor ecx, ecx
cmp eax, ecx
jne 0x10028ff5
mov dword [esi + 0x594], ecx
mov dword [esi + 0x598], ecx
cmp cx, word [ebp - 0x125c]
jae 0x10028147
mov edx, 0xfffffddc
mov eax, edi
sub edx, esi
lea ebx, [ebx]
mov ecx, dword [esi + 0x594]
mov dword [ebp - 0x1240], edx
mov dl, byte [eax]
mov byte [ecx + esi + 0x224], dl
cmp byte [eax], 0xfe
mov edx, dword [ebp - 0x1240]
jae 0x10028137
add dword [esi + 0x594], ebx
movzx ecx, byte [eax]
cmp ecx, dword [esi + 0x598]
jle 0x10028137
mov dword [esi + 0x598], ecx
movzx edi, word [ebp - 0x125c]
add eax, ebx
lea ecx, [edx + eax]
cmp ecx, edi
jl 0x10028100
movzx edx, word [ebp - 0x1250]
add edx, dword [esi + 0x5a4]
mov ecx, dword [esi + 0x110]
add dword [esi + 0x598], ebx
push 0
push edx
push 2
lea eax, [ebp - 0x408]
push eax
call fcn.100726c0
test eax, eax
jne 0x10028ff5
cmp byte [ebp - 0x125d], 0xfc
jne 0x100281ca
xor edi, edi
jmp 0x10028190
lea ecx, [ebp - 0x1256]
push ecx
mov ecx, dword [esi + 0x110]
call fcn.10072be0
test eax, eax
jne 0x10028ff5
mov al, byte [ebp - 0x1256]
test al, 0x10
je 0x100281c3
movzx edx, byte [ebp + edi - 0x24]
shl al, 4
mov byte [edx + esi + 0x510], al
add edi, ebx
cmp edi, 0x20
jl 0x10028190
test byte [ebp - 0x1255], 0x80
jne 0x10028208
mov eax, 0x80808080
mov dword [esi + 0x510], eax
mov dword [esi + 0x514], eax
mov dword [esi + 0x518], eax
mov dword [esi + 0x51c], eax
mov dword [esi + 0x520], eax
mov dword [esi + 0x524], eax
mov dword [esi + 0x528], eax
mov dword [esi + 0x52c], eax
cmp dword [esi + 0x5a4], 0
mov dword [ebp - 0x1248], 0
jle 0x10028533
lea ebx, [esi + 0x8c0]
push 0x34
lea eax, [ebx - 0x10]
push 0
push eax
mov dword [ebp - 0x1234], 1
call fcn.100c6660
mov edi, dword [ebp - 0x1248]
movzx eax, word [ebp + edi*2 - 0x408]
mov ecx, dword [esi + 0x110]
add esp, 0xc
push 0
shl eax, 4
push eax
call fcn.10072d00
test eax, eax
jne 0x10028ff5
mov ecx, dword [esi + 0x110]
push 1
push 0xd
call fcn.10072d00
test eax, eax
jne 0x10028ff5
lea ecx, [ebp - 0x1260]
push ecx
mov ecx, dword [esi + 0x110]
call fcn.10072be0
test eax, eax
jne 0x10028ff5
mov ecx, dword [esi + 0x110]
lea edx, [ebp - 0x1238]
push edx
call fcn.10072c40
test eax, eax
jne 0x10028ff5
movzx eax, byte [ebp - 0x1260]
movzx ecx, word [ebp - 0x1238]
push 0
push 1
shl eax, 0x10
add eax, ecx
mov ecx, dword [esi + 0x110]
push 4
lea edx, [ebp - 0x1244]
push edx
mov dword [ebp + edi*4 - 0x1194], eax
call fcn.100726c0
test eax, eax
jne 0x10028ff5
mov ecx, dword [esi + 0x110]
push eax
push 1
push 4
lea edi, [ebx - 4]
push edi
call fcn.100726c0
test eax, eax
jne 0x10028ff5
mov ecx, dword [esi + 0x110]
push eax
push 1
push 4
push ebx
call fcn.100726c0
test eax, eax
jne 0x10028ff5
mov eax, dword [edi]
sub dword [ebx], eax
lea edi, [ebx - 0xc]
lea ecx, [edi + 4]
push ecx
mov ecx, dword [esi + 0x110]
call fcn.10072be0
test eax, eax
jne 0x10028ff5
mov ecx, dword [esi + 0x110]
push eax
call fcn.10072c40
test eax, eax
jne 0x10028ff5
mov ecx, dword [esi + 0x110]
lea edx, [ebp - 0x125f]
push edx
call fcn.10072be0
test eax, eax
jne 0x10028ff5
mov ecx, dword [esi + 0x110]
push edi
call fcn.10072c70
test eax, eax
jne 0x10028ff5
mov ecx, dword [esi + 0x110]
push 1
push 0xe
call fcn.10072d00
test eax, eax
jne 0x10028ff5
mov ecx, dword [esi + 0x110]
push eax
push 1
push 0x1c
lea eax, [ebp - 0x40]
push eax
call fcn.100726c0
test eax, eax
jne 0x10028ff5
mov ecx, dword [ebp - 0x1248]
push ecx
lea edx, [ebp - 0x140]
push str.Sample_name__d
push edx
call fcn.100c699a
add esp, 0xc
push 0
push 3
push 0x1c
lea eax, [ebp - 0x40]
push eax
lea ecx, [ebp - 0x140]
push ecx
push 9
mov ecx, esi
call fcn.10003b80
test eax, eax
jne 0x10028ff5
mov ecx, dword [esi + 0x110]
push 1
push 4
call fcn.10072d00
test eax, eax
jne 0x10028ff5
mov al, byte [ebp - 0x125f]
mov edi, dword [ebp - 0x1244]
test al, 1
je 0x10028428
cmp dword [ebx], 2
jbe 0x10028428
mov dword [ebp - 0x1230], 0x4a
jmp 0x1002843b
mov dword [ebp - 0x1230], 0x49
mov dword [ebx - 4], 0
mov dword [ebx], edi
mov dword [ebp - 0x1240], 1
test al, 4
je 0x1002845b
add edi, edi
mov dword [ebp - 0x1240], 2
mov dword [ebp - 0x1244], edi
test al, 2
je 0x10028471
add edi, edi
mov dword [ebp - 0x1234], 2
mov dword [ebp - 0x1244], edi
test edi, edi
je 0x10028517
push 0x88
lea edx, [ebp - 0x1304]
push 0
push edx
call fcn.100c6660
mov eax, dword [ebp - 0x1234]
mov ecx, dword [ebx - 0xc]
mov edx, dword [ebp - 0x1240]
add esp, 0xc
mov dword [ebp - 0x12f8], eax
mov dword [ebp - 0x12f4], ecx
mov ecx, dword [ebp - 0x1230]
lea eax, [ebx - 0x10]
push eax
lea eax, [ebp - 0x1304]
push eax
or ecx, 0x400
push ecx
mov ecx, dword [esi + 0x14]
push 0
mov dword [ebp - 0x1304], 0x88
mov dword [ebp - 0x1300], edi
mov dword [ebp - 0x12f0], edx
call fcn.100c27a0
test eax, eax
jne 0x10028ff5
test byte [ebp - 0x1230], 2
je 0x10028517
mov eax, dword [ebx - 4]
mov edi, dword [ebx]
mov ecx, dword [ebx - 0x10]
mov edx, dword [ecx]
push 2
lea edi, [edi + eax - 1]
push edi
push 2
push eax
mov eax, dword [edx + 0xac]
call eax
test eax, eax
jne 0x10028ff5
mov eax, dword [ebp - 0x1248]
inc eax
add ebx, 0x34
mov dword [ebp - 0x1248], eax
cmp eax, dword [esi + 0x5a4]
jl 0x10028225
movzx eax, word [ebp - 0x1250]
mov ecx, dword [esi + 0x598]
cmp ecx, eax
jle 0x10028546
mov eax, ecx
push 0
push 0x7e1
mov dword [esi + 0x59c], eax
mov edx, dword [0x100fecc0]
lea ecx, [eax*8]
push 0x100dcebc
push ecx
mov ecx, dword [edx + 4]
call fcn.10075b20
mov dword [esi + 0x218], eax
test eax, eax
je 0x10028fc4
mov ax, word [ebp - 0x1250]
xor ecx, ecx
mov dword [ebp - 0x1248], 0
cmp cx, ax
jae 0x1002877c
jmp 0x100285a0
mov edx, dword [esi + 0x5a4]
mov edi, dword [ebp - 0x1248]
mov ecx, dword [esi + 0x110]
add edx, edi
movzx eax, word [ebp + edx*2 - 0x408]
shl eax, 4
push 0
add eax, 2
push eax
call fcn.10072d00
test eax, eax
jne 0x10028ff5
mov ecx, dword [esi + 0x218]
lea edi, [ecx + edi*8]
mov dword [edi], 0x40
mov eax, dword [esi + 0x324]
mov edx, dword [0x100fecc0]
mov ecx, dword [edx + 4]
push 0
push 0x804
lea eax, [eax + eax*4]
shl eax, 6
push 0x100dcebc
push eax
mov dword [ebp - 0x1240], edi
call fcn.10075b20
mov dword [edi + 4], eax
test eax, eax
je 0x10028fc4
mov dword [ebp - 0x1230], 0
mov ecx, dword [esi + 0x110]
lea eax, [ebp - 0x1239]
push eax
call fcn.10072be0
test eax, eax
jne 0x10028ff5
mov bl, byte [ebp - 0x1239]
test bl, bl
je 0x1002874a
mov edx, dword [esi + 0x324]
movzx ecx, bl
and ecx, 0x1f
movzx ecx, byte [ebp + ecx - 0x24]
cmp ecx, edx
jge 0x10028679
mov eax, dword [ebp - 0x1230]
imul eax, edx
mov edx, dword [ebp - 0x1240]
add eax, ecx
lea edi, [eax + eax*4]
add edi, dword [edx + 4]
jmp 0x1002867f
lea edi, [ebp - 0x127c]
test bl, 0x20
je 0x100286f2
mov ecx, dword [esi + 0x110]
lea eax, [ebp - 0x1238]
push eax
call fcn.10072b80
test eax, eax
jne 0x10028ff5
mov cx, word [ebp - 0x1238]
movzx eax, cx
sub eax, 0xfe
je 0x100286d2
dec eax
je 0x100286cd
movzx eax, cx
shr eax, 4
mov dl, al
add dl, dl
add al, dl
add al, al
add al, al
and cl, 0xf
add al, cl
inc al
mov byte [edi], al
jmp 0x100286d5
mov byte [edi], 0
jmp 0x100286d5
mov byte [edi], 0xff
mov ecx, dword [esi + 0x110]
lea eax, [edi + 1]
push eax
call fcn.10072be0
test eax, eax
jne 0x10028ff5
mov bl, byte [ebp - 0x1239]
test bl, 0x40
je 0x10028716
mov ecx, dword [esi + 0x110]
lea ebx, [edi + 2]
push ebx
call fcn.10072be0
test eax, eax
jne 0x10028ff5
inc byte [ebx]
mov bl, byte [ebp - 0x1239]
test bl, bl
jns 0x10028750
lea ecx, [edi + 3]
push ecx
mov ecx, dword [esi + 0x110]
call fcn.10072be0
test eax, eax
jne 0x10028ff5
mov ecx, dword [esi + 0x110]
add edi, 4
push edi
call fcn.10072be0
test eax, eax
jne 0x10028ff5
jmp 0x10028750
inc dword [ebp - 0x1230]
cmp dword [ebp - 0x1230], 0x40
jl 0x10028623
mov ax, word [ebp - 0x1250]
mov ecx, dword [ebp - 0x1248]
movzx edx, ax
inc ecx
mov dword [ebp - 0x1248], ecx
cmp ecx, edx
jl 0x100285a0
movzx ebx, ax
mov eax, dword [esi + 0x598]
cmp ebx, eax
jge 0x100287da
lea esp, [esp]
mov eax, dword [esi + 0x218]
lea edi, [eax + ebx*8]
mov dword [edi], 0x40
mov eax, dword [esi + 0x324]
mov edx, dword [0x100fecc0]
push 0
push 0x87c
lea ecx, [eax + eax*4]
shl ecx, 6
push 0x100dcebc
push ecx
mov ecx, dword [edx + 4]
call fcn.10075b20
mov dword [edi + 4], eax
test eax, eax
je 0x10028fc4
inc ebx
cmp ebx, dword [esi + 0x598]
jl 0x10028790
xor edi, edi
mov dword [ebp - 0x1248], edi
cmp dword [esi + 0x5a4], edi
jle 0x10028c21
lea ebx, [esi + 0x8b0]
mov dword [ebp - 0x1240], ebx
lea ebx, [ebx]
mov eax, dword [ebp + edi*4 - 0x1194]
mov ecx, dword [esi + 0x110]
push 0
shl eax, 4
push eax
call fcn.10072d00
test eax, eax
jne 0x10028ff5
mov ecx, dword [ebx]
test ecx, ecx
je 0x10028c05
mov edx, dword [ecx]
mov edx, dword [edx + 0x5c]
push 4
lea eax, [ebp - 0x1274]
push eax
call edx
test eax, eax
jne 0x10028ff5
mov ecx, dword [ebx]
mov eax, dword [ecx]
mov eax, dword [eax + 0x1c]
lea edx, [ebp - 0x1268]
push edx
lea edx, [ebp - 0x124c]
push edx
lea edx, [ebp - 0x1270]
push edx
lea edx, [ebp - 0x1254]
push edx
mov edx, dword [ebp - 0x1274]
push edx
push 0
call eax
test eax, eax
jne 0x10028ff5
mov ecx, dword [ebp - 0x1254]
mov edx, dword [ebp - 0x124c]
test ecx, ecx
je 0x10028bd2
test edx, edx
je 0x10028bd2
mov ebx, dword [ebx]
cmp dword [ebx + 0x1c], 2
jne 0x10028a33
cmp dword [ebx + 0x48], 1
jne 0x100288bd
push eax
shr edx, 1
push edx
push 2
push ecx
mov ecx, dword [esi + 0x110]
call fcn.100726c0
jmp 0x100289f9
mov ebx, edx
shr ebx, 2
mov dword [ebp - 0x1234], 0
mov dword [ebp - 0x1230], ebx
test ebx, ebx
je 0x1002895e
lea ebx, [ebx]
mov edi, 0x200
cmp ebx, 0x200
ja 0x100288ef
mov edi, ebx
push 0
push edi
push 2
lea ecx, [ebp - 0xc08]
push ecx
mov ecx, dword [esi + 0x110]
call fcn.100726c0
xor ecx, ecx
mov dword [ebp - 0x1244], eax
test edi, edi
je 0x10028946
mov eax, dword [ebp - 0x1234]
add eax, eax
add eax, eax
lea esp, [esp]
mov dx, word [ebp + ecx*2 - 0xc08]
mov ebx, dword [ebp - 0x1254]
mov word [eax + ebx], dx
inc ecx
add eax, 4
cmp ecx, edi
jb 0x10028920
mov ebx, dword [ebp - 0x1230]
mov eax, dword [ebp - 0x1244]
add dword [ebp - 0x1234], edi
sub ebx, edi
mov dword [ebp - 0x1230], ebx
test ebx, ebx
jne 0x100288e0
mov edx, dword [ebp - 0x124c]
mov ebx, edx
shr ebx, 2
mov dword [ebp - 0x1234], 0
mov dword [ebp - 0x1230], ebx
test ebx, ebx
je 0x100289ff
jmp 0x10028980
mov edi, 0x200
cmp ebx, 0x200
ja 0x1002898f
mov edi, ebx
mov ecx, dword [esi + 0x110]
push 0
push edi
push 2
lea eax, [ebp - 0x1008]
push eax
call fcn.100726c0
xor ecx, ecx
mov dword [ebp - 0x1244], eax
test edi, edi
je 0x100289e7
mov eax, dword [ebp - 0x1234]
add eax, eax
add eax, eax
lea esp, [esp]
mov dx, word [ebp + ecx*2 - 0x1008]
mov ebx, dword [ebp - 0x1254]
mov word [eax + ebx + 2], dx
inc ecx
add eax, 4
cmp ecx, edi
jb 0x100289c0
mov eax, dword [ebp - 0x1244]
mov ebx, dword [ebp - 0x1230]
add dword [ebp - 0x1234], edi
sub ebx, edi
mov dword [ebp - 0x1230], ebx
test ebx, ebx
jne 0x10028980
mov edx, dword [ebp - 0x124c]
xor ecx, ecx
test edx, 0xfffffffe
jbe 0x10028bc5
lea ecx, [ecx]
mov edx, dword [ebp - 0x1254]
mov edi, 0x8000
xor word [edx + ecx*2], di
mov edx, dword [ebp - 0x124c]
mov edi, edx
inc ecx
shr edi, 1
cmp ecx, edi
jb 0x10028a10
jmp 0x10028bc5
cmp dword [ebx + 0x48], 1
jne 0x10028a57
push 0
push edx
push 1
push ecx
mov ecx, dword [esi + 0x110]
call fcn.100726c0
test eax, eax
jne 0x10028ff5
jmp 0x10028b97
mov ebx, edx
shr ebx, 2
mov dword [ebp - 0x1234], 0
mov dword [ebp - 0x1230], ebx
test ebx, ebx
je 0x10028afc
jmp 0x10028a80
mov edi, 0x200
cmp ebx, 0x200
ja 0x10028a8f
mov edi, ebx
mov ecx, dword [esi + 0x110]
push 0
push edi
push 1
lea eax, [ebp - 0x808]
push eax
call fcn.100726c0
xor ecx, ecx
mov dword [ebp - 0x1244], eax
test edi, edi
je 0x10028ae4
mov eax, dword [ebp - 0x1234]
add eax, eax
lea ebx, [ebx]
mov dl, byte [ebp + ecx - 0x808]
mov ebx, dword [ebp - 0x1254]
mov byte [eax + ebx], dl
inc ecx
add eax, 2
cmp ecx, edi
jb 0x10028ac0
mov ebx, dword [ebp - 0x1230]
mov eax, dword [ebp - 0x1244]
add dword [ebp - 0x1234], edi
sub ebx, edi
mov dword [ebp - 0x1230], ebx
test ebx, ebx
jne 0x10028a80
mov edx, dword [ebp - 0x124c]
mov ebx, edx
shr ebx, 2
mov dword [ebp - 0x1234], 0
mov dword [ebp - 0x1230], ebx
test ebx, ebx
je 0x10028b9d
lea esp, [esp]
mov edi, 0x200
cmp ebx, 0x200
ja 0x10028b2f
mov edi, ebx
mov ecx, dword [esi + 0x110]
push 0
push edi
push 1
lea eax, [ebp - 0x608]
push eax
call fcn.100726c0
xor ecx, ecx
mov dword [ebp - 0x1244], eax
test edi, edi
je 0x10028b85
mov eax, dword [ebp - 0x1234]
add eax, eax
lea ebx, [ebx]
mov dl, byte [ebp + ecx - 0x608]
mov ebx, dword [ebp - 0x1254]
mov byte [eax + ebx + 1], dl
inc ecx
add eax, 2
cmp ecx, edi
jb 0x10028b60
mov ebx, dword [ebp - 0x1230]
mov eax, dword [ebp - 0x1244]
add dword [ebp - 0x1234], edi
sub ebx, edi
mov dword [ebp - 0x1230], ebx
test ebx, ebx
jne 0x10028b20
mov edx, dword [ebp - 0x124c]
xor ecx, ecx
test edx, edx
je 0x10028bc5
jmp 0x10028bb0
mov edx, dword [ebp - 0x1254]
xor byte [ecx + edx], 0x80
mov edx, dword [ebp - 0x124c]
inc ecx
cmp ecx, edx
jb 0x10028bb0
test eax, eax
je 0x10028bd2
cmp eax, 0x16
jne 0x10028ff5
mov edi, dword [ebp - 0x1268]
mov ebx, dword [ebp - 0x1240]
mov ecx, dword [ebx]
mov eax, dword [ecx]
mov eax, dword [eax + 0x20]
push edi
push edx
mov edx, dword [ebp - 0x1270]
push edx
mov edx, dword [ebp - 0x1254]
push edx
call eax
test eax, eax
jne 0x10028ff5
mov edi, dword [ebp - 0x1248]
inc edi
add ebx, 0x34
mov dword [ebp - 0x1248], edi
mov dword [ebp - 0x1240], ebx
cmp edi, dword [esi + 0x5a4]
jl 0x10028800
mov ecx, dword [0x100fecc0]
mov ecx, dword [ecx + 4]
xor ebx, ebx
push ebx
push 0x937
push 0x100dcebc
push 0x128
call fcn.10075b20
mov dword [esi + 0x40], eax
cmp eax, ebx
je 0x10028fc4
mov edx, dword [ebp - 0x126c]
mov dword [esi + 0x20], eax
mov dword [eax + 0x10c], edx
mov eax, dword [ebp + 0xc]
cmp eax, ebx
je 0x10028c74
mov eax, dword [eax + 0x14]
cmp eax, ebx
je 0x10028c74
mov ecx, dword [esi + 0x20]
mov dword [ecx + 0x100], eax
jmp 0x10028c96
test byte [ebp + 8], 0x40
je 0x10028c89
mov edx, dword [esi + 0x20]
mov dword [edx + 0x100], 5
jmp 0x10028c96
mov eax, dword [esi + 0x20]
mov dword [eax + 0x100], 2
mov ecx, dword [esi + 0x20]
push 0x100
lea eax, [esi + 0x118]
mov dword [ecx + 0x104], 2
mov edx, dword [esi + 0x20]
push eax
push edx
call fcn.10076ba0
mov eax, dword [esi + 0x20]
add esp, 0xc
add eax, 0x108
je 0x10028cd0
mov ecx, dword [esi + 0x14]
mov edx, dword [ecx + 0x55c]
mov dword [eax], edx
mov ecx, dword [esi + 0x20]
mov dword [esi + 0xcc], ebx
mov eax, dword [ecx + 0x100]
mov edi, dword [ecx + 0x104]
cmp eax, 0xc
ja case.default.0x10028cf5
movzx edx, byte [eax + 0x1002901c]
jmp dword [edx*4 + 0x10029008]
mov eax, 8
cdq
shrd eax, edx, 3
shr edx, 3
mov dword [ecx + 0x114], eax
jmp 0x10028d93
mov eax, 0x10
cdq
shrd eax, edx, 3
shr edx, 3
mov dword [ecx + 0x114], eax
jmp 0x10028d93
mov eax, 0x18
cdq
shrd eax, edx, 3
shr edx, 3
mov dword [ecx + 0x114], eax
jmp 0x10028d93
mov eax, 0x20
cdq
shrd eax, edx, 3
shr edx, 3
mov dword [ecx + 0x114], eax
jmp 0x10028d93
jmp dword [eax*4 + 0x1002902c]
mov eax, dword [ecx + 0x114]
imul eax, edi
mov dword [ecx + 0x114], eax
push 0x98
lea ecx, [ebp - 0x122c]
push ebx
push ecx
call fcn.100c6660
lea edx, [ebp - 0x122c]
push str.FMOD_S3M_Target_Unit
push edx
call fcn.10076b80
mov eax, dword [esi + 0x20]
add esp, 0x14
mov dword [ebp - 0x120c], 0x10100
mov ecx, dword [eax + 0x104]
mov dword [ebp - 0x1208], ecx
mov edx, dword [eax + 0x100]
mov ecx, dword [esi + 0x14]
push 1
lea edi, [esi + 0x21c]
push edi
lea eax, [ebp - 0x122c]
push eax
mov dword [ebp - 0x11c4], edx
mov dword [ebp - 0x11b8], 6
call fcn.100bb990
cmp eax, ebx
jne 0x10028ff5
mov ecx, dword [esi + 0x20]
fild dword [ecx + 0x108]
mov edx, dword [edi]
push ebx
push 0x97a
fstp dword [edx + 0x104]
mov eax, dword [esi + 0x324]
mov dword [esi + 0x428], eax
imul eax, eax, 0x298
push 0x100dcebc
push eax
mov eax, dword [0x100fecc0]
mov ecx, dword [eax + 4]
call fcn.10075b20
mov dword [esi + 0x42c], eax
cmp eax, ebx
je 0x10028fc4
xor edi, edi
cmp dword [esi + 0x428], ebx
jle 0x10028e8e
xor ebx, ebx
lea ecx, [ecx]
mov ecx, dword [esi + 0x42c]
add ecx, ebx
je 0x10028e7f
call fcn.1001a570
inc edi
add ebx, 0x298
cmp edi, dword [esi + 0x428]
jl 0x10028e70
mov edi, dword [esi + 0x428]
mov ecx, dword [0x100fecc0]
mov ecx, dword [ecx + 4]
push 0
push 0x98b
push 0x100dcebc
add edi, edi
push 0x18
mov dword [ebp - 0x1240], edi
call fcn.10075b20
test eax, eax
je 0x10028ec5
mov ecx, eax
call fcn.100a4360
jmp 0x10028ec7
xor eax, eax
mov dword [esi + 0x430], eax
test eax, eax
je 0x10028fc4
mov edx, dword [esi + 0x14]
push edi
push 0
push edx
mov ecx, eax
call fcn.100a4380
test eax, eax
jne 0x10028ff5
imul edi, edi, 0x320
push eax
mov eax, dword [0x100fecc0]
mov ecx, dword [eax + 4]
push 0x997
push 0x100dcebc
push edi
call fcn.10075b20
mov dword [esi + 0x434], eax
test eax, eax
je 0x10028fc4
xor ebx, ebx
cmp dword [ebp - 0x1240], ebx
jle 0x10028f74
xor edi, edi
mov ecx, dword [esi + 0x434]
add ecx, edi
je 0x10028f33
call fcn.10099920
mov ecx, dword [esi + 0x21c]
mov edx, dword [esi + 0x434]
push ecx
mov ecx, dword [esi + 0x430]
add edx, edi
push edx
push ebx
call fcn.100a4610
test eax, eax
jne 0x10028ff5
mov eax, dword [esi + 0x434]
or dword [eax + edi + 0x28], 0x800
inc ebx
add edi, 0x320
cmp ebx, dword [ebp - 0x1240]
jl 0x10028f24
test dword [ebp + 8], 0x4100
jne 0x10028f96
mov eax, dword [esi + 0x20]
mov dword [esi + 0x220], 0
mov dword [eax + 0x110], 0xffffffff
jmp 0x10028fe3
mov ecx, dword [esi + 0x594]
mov edx, dword [0x100fecc0]
push 0
push 0x9a7
shl ecx, 8
push 0x100dcebc
push ecx
mov ecx, dword [edx + 4]
call fcn.10075b20
mov dword [esi + 0x220], eax
test eax, eax
jne 0x10028fdc
pop edi
pop ebx
mov eax, 0x2b
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100c5f50
mov esp, ebp
pop ebp
ret 8
mov ecx, esi
call fcn.10027760
push 1
mov ecx, esi
mov dword [esi + 0x1c], 0
call fcn.100a8750
xor eax, eax
pop edi
mov ecx, dword [ebp - 4]
pop ebx
xor ecx, ebp
pop esi
call fcn.100c5f50
mov esp, ebp
pop ebp
ret 8