Function at 0x40f380
Capabilities:
Encode data using base64
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
push 0xffffffffffffffff
push 0x57767b
mov eax, dword fs:[0]
push eax
sub esp, 0x328
mov eax, dword [0x60bd28]
xor eax, esp
mov dword [esp + 0x2f0], eax
push ebx
push esi
push edi
mov eax, dword [0x60bd28]
xor eax, esp
push eax
lea eax, [esp + 0x338]
mov dword fs:[0], eax
mov eax, dword [0x60e340]
mov ecx, dword [eax]
xor esi, esi
cmp dword [ecx + 4], esi
mov dword [esp + 0x9c], esi
jle 0x411494
mov edx, esi
imul edx, edx, 0x8495
cmp byte [eax + 8], 0
lea ebx, [edx + ecx + 8]
je 0x411449
mov ecx, dword [eax + 0x10]
mov edx, dword [eax + 0x14]
mov dword [eax + ecx*4 + 0x18], edx
mov eax, dword [0x60e340]
add dword [eax + 0x10], 1
mov eax, dword [0x60e340]
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push 0xbb
push ecx
mov dword [eax + 0x14], 0
call fcn.00408fe0
add esp, 8
call fcn.0040ba60
push str._________________
call fcn.0040b400
add esp, 8
lea edx, [ebx + 0x3d]
push edx
lea eax, [ebx + 0x35]
push eax
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push 0x5969b0
call fcn.00402a30
lea ecx, [esp + 0xac]
push 0x88
push ecx
call fcn.00409d00
mov edx, dword [eax]
add esp, 0xc
push edx
lea eax, [esp + 0x108]
push str._s_.8s__.16s
push eax
call fcn.00540420
mov eax, dword [esp + 0xb4]
add eax, 0xfffffff0
add esp, 0x14
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40f49e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0xfc]
push ecx
call fcn.0040b400
add esp, 4
lea edx, [ebx + 9]
push edx
push ecx
mov ecx, esp
mov dword [esp + 0x1c], esp
push 0x5969b0
call fcn.00402a30
lea eax, [esp + 0xdc]
push 0xbc
push eax
call fcn.00409d00
mov ecx, dword [eax]
add esp, 0xc
push ecx
lea edx, [esp + 0x104]
push 0x5962e8
push edx
call fcn.00540420
mov eax, dword [esp + 0xe4]
add eax, 0xfffffff0
add esp, 0x10
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40f513
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0xfc]
push ecx
call fcn.0040b400
add esp, 4
lea edx, [ebx + 0x4d]
push edx
push ecx
mov ecx, esp
mov dword [esp + 0x1c], esp
push 0x5969b0
call fcn.00402a30
lea eax, [esp + 0xb4]
push 0xbd
push eax
call fcn.00409d00
mov ecx, dword [eax]
add esp, 0xc
push ecx
lea edx, [esp + 0x104]
push str._s_.4s
push edx
call fcn.00540420
mov eax, dword [esp + 0xbc]
add eax, 0xfffffff0
add esp, 0x10
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40f588
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0xfc]
push ecx
call fcn.0040b400
movzx edx, word [ebx + 0x72]
push edx
call fcn.00418b70
movzx eax, ax
add esp, 8
cmp eax, 0x400
jl 0x40f5fb
test eax, 0x3ff
jne 0x40f5fb
sar eax, 0xa
push eax
push ecx
mov ecx, esp
mov dword [esp + 0x1c], esp
push 0x5969b0
call fcn.00402a30
lea eax, [esp + 0xf4]
push 0x129
push eax
call fcn.00409d00
mov ecx, dword [eax]
add esp, 0xc
push ecx
lea edx, [esp + 0x104]
push str._s_d_MB
push edx
call fcn.00540420
mov eax, dword [esp + 0xfc]
jmp 0x40f63e
push eax
push ecx
mov ecx, esp
mov dword [esp + 0x1c], esp
push 0x5969b0
call fcn.00402a30
lea ecx, [esp + 0xbc]
push 0x129
push ecx
call fcn.00409d00
mov edx, dword [eax]
add esp, 0xc
push edx
lea eax, [esp + 0x104]
push str._s_d_KB
push eax
call fcn.00540420
mov eax, dword [esp + 0xc4]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
add esp, 0x10
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40f65d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0xfc]
push ecx
call fcn.0040b400
lea eax, [ebx + 0x51]
push eax
lea edx, [esp + 0x104]
push str._.12s
push edx
call fcn.00540420
add esp, 0x10
xor edi, edi
mov dword [esp + 0x20], edi
lea esi, [esp + 0xfc]
movsx eax, byte [esi]
push eax
call fcn.005409f4
add esp, 4
test eax, eax
jne 0x40f6ae
mov al, byte [esi]
cmp al, 0x2f
je 0x40f6b3
cmp al, 0x20
jne 0x40f6d3
test edi, edi
jne 0x40f6d3
cmp byte [esi], 0x2f
jne 0x40f6b9
add edi, 1
mov byte [esi], 0x2d
movsx ecx, byte [esi]
push ecx
call fcn.005409f4
add esp, 4
test eax, eax
je 0x40f6ce
add dword [esp + 0x20], 1
add esi, 1
jmp 0x40f690
cmp dword [esp + 0x20], 6
mov byte [esi], 0
jne 0x40f710
test edi, edi
jne 0x40f710
lea edx, [esp + 0x100]
push edx
lea eax, [esp + 0x102]
push eax
lea ecx, [esp + 0x104]
push ecx
lea edx, [esp + 0x208]
push str._.2s__.2s__.2s
push edx
call fcn.00540420
add esp, 0x14
jmp 0x40f745
cmp edi, 2
jge 0x40f721
mov word [esp + 0x1fc], 0x3f
jmp 0x40f745
xor eax, eax
jmp 0x40f730
mov cl, byte [esp + eax + 0xfc]
mov byte [esp + eax + 0x1fc], cl
add eax, 1
test cl, cl
jne 0x40f730
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push 0x5969b0
call fcn.00402a30
lea eax, [esp + 0xe0]
push 0x86
push eax
call fcn.00409d00
mov ecx, dword [eax]
add esp, 0xc
lea edx, [esp + 0xfc]
mov al, byte [ecx]
mov byte [edx], al
add ecx, 1
add edx, 1
test al, al
jne 0x40f774
mov eax, dword [esp + 0xdc]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40f7a5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [esp + 0x1fc]
mov esi, eax
mov edi, edi
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x40f7b0
lea edi, [esp + 0xfc]
sub eax, esi
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x40f7c5
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0xfc]
push ecx
call fcn.0040b400
mov ecx, esp
mov dword [esp + 0x18], esp
push 0x5969b0
call fcn.00402a30
lea edx, [esp + 0xc0]
push 0x12b
push edx
call fcn.00409d00
mov ecx, dword [eax]
add esp, 0xc
lea edx, [esp + 0xfc]
mov al, byte [ecx]
mov byte [edx], al
add ecx, 1
add edx, 1
test al, al
jne 0x40f818
mov eax, dword [esp + 0xbc]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40f849
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebx + 0x8457]
xor esi, esi
cmp eax, esi
je 0x40f8b7
push 0x1f
add eax, 4
push eax
lea ecx, [esp + 0x204]
push ecx
call fcn.005405c0
mov edx, dword [ebx + 0x8457]
movzx eax, byte [edx + 3]
lea ecx, [esp + 0x208]
push ecx
mov byte [esp + eax + 0x20c], 0
call fcn.00404140
lea eax, [esp + 0x20c]
add esp, 0x10
mov esi, eax
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x40f893
lea edi, [esp + 0xfc]
sub eax, esi
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x40f8a8
jmp 0x40f92c
mov byte [esp + 0x13], 1
xor edi, edi
mov edi, edi
mov al, byte [ebx + edi + 0x5b]
movsx edx, al
push edx
mov byte [esp + 0x2b], al
call fcn.00540cde
add esp, 4
test eax, eax
jne 0x40f8dc
mov byte [esp + 0x13], al
mov al, byte [esp + 0x27]
mov byte [esp + edi + 0x1fc], al
add edi, 1
cmp edi, 0xa
jl 0x40f8c0
cmp byte [esp + 0x13], 0
je 0x40f93c
lea eax, [esp + 0x1fc]
mov byte [esp + 0x206], 0
mov edx, eax
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x40f907
lea edi, [esp + 0xfc]
sub eax, edx
add edi, 0xffffffff
lea esp, [esp]
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x40f920
mov esi, edx
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
xor esi, esi
lea ecx, [esp + 0xfc]
push ecx
call fcn.0040b400
add esp, 4
lea eax, [ebx + 0x51]
push eax
push ecx
mov ecx, esp
mov dword [esp + 0x1c], esp
push 0x5969b0
call fcn.00402a30
lea edx, [esp + 0x100]
push 0xc1
push edx
call fcn.00409d00
mov eax, dword [eax]
add esp, 0xc
push eax
lea ecx, [esp + 0x104]
push str._s__.20s
push ecx
call fcn.00540420
mov eax, dword [esp + 0x108]
add eax, 0xfffffff0
add esp, 0x10
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40f9b1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0xfc]
push ecx
call fcn.0040b400
mov edx, dword [ebx + 0x29]
add esp, 4
add edx, 0x41
push edx
push ecx
mov ecx, esp
mov dword [esp + 0x1c], esp
push 0x5969b0
call fcn.00402a30
lea eax, [esp + 0xcc]
push 0xc2
push eax
call fcn.00409d00
mov ecx, dword [eax]
add esp, 0xc
push ecx
lea edx, [esp + 0x104]
push str._s_c:_
push edx
call fcn.00540420
mov eax, dword [esp + 0xd4]
add eax, 0xfffffff0
add esp, 0x10
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40fa29
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0xfc]
push ecx
call fcn.0040b400
mov edx, dword [ebx + 5]
mov eax, dword [ebx + 1]
add esp, 4
push edx
push eax
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push 0x5969b0
call fcn.00402a30
lea ecx, [esp + 0xf0]
push 0xc3
push ecx
call fcn.00409d00
mov edx, dword [eax]
add esp, 0xc
push edx
lea eax, [esp + 0x108]
push 0x596d08
push eax
call fcn.00540420
mov eax, dword [esp + 0xf8]
add eax, 0xfffffff0
add esp, 0x14
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40faa2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0xfc]
push ecx
call fcn.0040b400
add esp, 4
test byte [ebx], 2
je 0x410f4f
movzx edx, byte [ebx + 0x6c]
shr dl, 5
lea eax, [esp + 0xf4]
push edx
push eax
call fcn.00419d70
add esp, 8
mov ecx, dword [eax]
push ecx
push ecx
mov ecx, esp
mov dword [esp + 0x1c], esp
push 0x5969b0
mov dword [esp + 0x34c], esi
call fcn.00402a30
lea edx, [esp + 0xd4]
push 0xc4
push edx
call fcn.00409d00
mov eax, dword [eax]
add esp, 0xc
push eax
lea ecx, [esp + 0x104]
push 0x5962e8
push ecx
call fcn.00540420
mov eax, dword [esp + 0xdc]
add eax, 0xfffffff0
add esp, 0x10
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40fb3e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0xf4]
add eax, 0xfffffff0
mov dword [esp + 0x340], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40fb6c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0xfc]
push ecx
call fcn.0040b400
lea edi, [ebx + 0x8c]
add esp, 4
cmp dword [edi], 0xffffffff
jne 0x40fbdf
lea edx, [esp + 0xa4]
push 0xc5
push edx
call fcn.00408fe0
mov ecx, dword [eax]
add esp, 8
lea edx, [esp + 0xfc]
mov al, byte [ecx]
mov byte [edx], al
add ecx, 1
add edx, 1
test al, al
jne 0x40fba5
mov eax, dword [esp + 0xa4]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40fee0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x40fee0
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push 0x5969b0
call fcn.00402a30
lea ecx, [esp + 0xac]
push 0xc6
push ecx
call fcn.00409d00
mov eax, dword [eax]
push eax
lea edx, [esp + 0x10c]
push edx
call fcn.00540420
mov eax, dword [esp + 0xbc]
add eax, 0xfffffff0
add esp, 0x14
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40fc38
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [edi], 0xffffffff
fld qword [0x596d00]
fst qword [esp + 0x14]
mov dword [esp + 0x20], esi
mov byte [esp + 0x13], 0
je 0x40feb5
mov eax, edi
jmp 0x40fc64
fld qword [esp + 0x14]
mov esi, dword [esp + 0x20]
test esi, esi
mov ecx, dword [eax]
mov dword [esp + 0x28], ecx
jne 0x40fdf1
cmp dword [ebx + 0x8491], 0xa
jle 0x40fdf1
mov eax, 0x5ea306d7
imul ecx
sar edx, 9
mov eax, edx
shr eax, 0x1f
add edx, eax
imul edx, edx, 0x569
mov eax, ecx
sub eax, edx
je 0x40fdde
cmp eax, 4
je 0x40fdde
cmp eax, 0xc
je 0x40fdde
cmp ecx, 0xcfc
je 0x40fdde
mov eax, 0x5eface49
imul ecx
sar edx, 9
mov eax, edx
shr eax, 0x1f
add eax, edx
imul eax, eax, 0x564
mov edx, ecx
sub edx, eax
je 0x40fdcb
cmp ecx, 0xcf0
je 0x40fdcb
mov eax, 0x60f25deb
imul ecx
sar edx, 9
mov eax, edx
shr eax, 0x1f
add eax, edx
imul eax, eax, 0x548
mov edx, ecx
sub edx, eax
je 0x40fdb8
cmp ecx, 0xcad
je 0x40fdb8
mov eax, 0x749cb29
imul ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
imul edx, edx, 0x1190
mov eax, ecx
sub eax, edx
je 0x40fda5
cmp eax, 0x118f
je 0x40fda5
cmp eax, 1
je 0x40fda5
cmp eax, 0xa89
je 0x40fda5
cmp eax, 0xa8a
je 0x40fda5
cmp eax, 0xa8b
je 0x40fda5
mov eax, 0x72c62a25
imul ecx
sar edx, 0xb
mov eax, edx
shr eax, 0x1f
add eax, edx
imul eax, eax, 0x11d8
mov edx, ecx
sub edx, eax
je 0x40fda5
mov eax, 0x3de9fdd3
imul ecx
sar edx, 0xa
mov eax, edx
shr eax, 0x1f
add eax, edx
imul eax, eax, 0x108a
sub ecx, eax
jne 0x40fdf1
fstp st(0)
mov byte [esp + 0x13], 1
fld qword [0x596cf8]
fst qword [esp + 0x14]
jmp 0x40fdf8
fstp st(0)
mov byte [esp + 0x13], 1
fld qword [0x596cf0]
fst qword [esp + 0x14]
jmp 0x40fdf8
fstp st(0)
mov byte [esp + 0x13], 1
fld qword [0x596ce8]
fst qword [esp + 0x14]
jmp 0x40fdf8
fstp st(0)
mov byte [esp + 0x13], 1
fld qword [0x596ce0]
fst qword [esp + 0x14]
jmp 0x40fdf8
fstp st(0)
mov byte [esp + 0x13], 1
fld qword [0x596cd8]
fst qword [esp + 0x14]
jmp 0x40fdf8
cmp byte [esp + 0x13], 0
je 0x40fe11
fidivr dword [esp + 0x28]
sub esp, 8
lea ecx, [esp + 0x204]
fstp qword [esp]
push str._.1f
push ecx
jmp 0x40fe28
fidivr dword [esp + 0x28]
sub esp, 8
lea edx, [esp + 0x204]
fstp qword [esp]
push str._.0f
push edx
call fcn.00540420
add esp, 0x10
test esi, esi
je 0x40fe5d
lea eax, [esp + 0xfc]
add eax, 0xffffffff
mov edi, edi
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x40fe40
mov cx, word [0x596cc4]
mov dl, byte [0x596cc6]
mov word [eax], cx
mov byte [eax + 2], dl
lea eax, [esp + 0x1fc]
mov esi, eax
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x40fe66
lea edi, [esp + 0xfc]
sub eax, esi
add edi, 0xffffffff
jmp 0x40fe80
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x40fe80
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [esp + 0x20]
add eax, 1
and ecx, 3
mov dword [esp + 0x20], eax
lea eax, [ebx + eax*4 + 0x8c]
rep movsb byte es:[edi], byte [esi]
cmp dword [eax], 0xffffffff
jne 0x40fc60
jmp 0x40feb7
fstp st(0)
lea eax, [esp + 0xfc]
add eax, 0xffffffff
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x40fec1
mov cx, word [0x596cc0]
mov dl, byte [0x596cc2]
mov word [eax], cx
mov byte [eax + 2], dl
xor esi, esi
lea eax, [esp + 0xfc]
push eax
call fcn.0040b400
lea edi, [ebx + 0x21c]
add esp, 4
cmp dword [edi], 0xffffffff
jne 0x40ff5a
lea ecx, [esp + 0xb0]
push 0xc7
push ecx
call fcn.00408fe0
mov ecx, dword [eax]
add esp, 8
lea edx, [esp + 0xfc]
lea esp, [esp]
mov al, byte [ecx]
mov byte [edx], al
add ecx, 1
add edx, 1
test al, al
jne 0x40ff20
mov eax, dword [esp + 0xb0]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x410270
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x410270
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push 0x5969b0
call fcn.00402a30
lea ecx, [esp + 0xbc]
push 0xc8
push ecx
call fcn.00409d00
mov eax, dword [eax]
push eax
lea edx, [esp + 0x10c]
push edx
call fcn.00540420
mov eax, dword [esp + 0xcc]
add eax, 0xfffffff0
add esp, 0x14
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40ffb3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [edi], 0xffffffff
fld qword [0x596d00]
fst qword [esp + 0x14]
mov dword [esp + 0x20], esi
mov byte [esp + 0x13], 0
je 0x410245
mov eax, edi
jmp 0x40ffd7
fld qword [esp + 0x14]
mov esi, dword [esp + 0x20]
test esi, esi
mov ecx, dword [eax]
mov dword [esp + 0x28], ecx
jne 0x41017c
cmp dword [ebx + 0x8491], 0xa
jle 0x41017c
mov eax, 0x5ea306d7
imul ecx
sar edx, 9
mov eax, edx
shr eax, 0x1f
add eax, edx
imul eax, eax, 0x569
mov edx, ecx
sub edx, eax
je 0x410169
cmp ecx, 0xcfc
je 0x410169
mov eax, 0x5eface49
imul ecx
sar edx, 9
mov eax, edx
shr eax, 0x1f
add eax, edx
imul eax, eax, 0x564
mov edx, ecx
sub edx, eax
je 0x410156
cmp ecx, 0xcf0
je 0x410156
mov eax, 0x60f25deb
imul ecx
sar edx, 9
mov eax, edx
shr eax, 0x1f
add eax, edx
imul eax, eax, 0x548
mov edx, ecx
sub edx, eax
je 0x410143
cmp ecx, 0xcad
je 0x410143
mov eax, 0x749cb29
imul ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
imul edx, edx, 0x1190
mov eax, ecx
sub eax, edx
je 0x410130
cmp eax, 0x118f
je 0x410130
cmp eax, 1
je 0x410130
mov eax, 0x72c62a25
imul ecx
sar edx, 0xb
mov eax, edx
shr eax, 0x1f
add eax, edx
imul eax, eax, 0x11d8
mov edx, ecx
sub edx, eax
jne 0x4100e5
fstp st(0)
mov byte [esp + 0x13], 1
fld qword [0x596cb8]
fst qword [esp + 0x14]
jmp 0x410183
mov eax, 0x3de9fdd3
imul ecx
sar edx, 0xa
mov eax, edx
shr eax, 0x1f
add eax, edx
imul eax, eax, 0x108a
mov edx, ecx
sub edx, eax
jne 0x410115
fstp st(0)
mov byte [esp + 0x13], 1
fld qword [0x596cf8]
fst qword [esp + 0x14]
jmp 0x410183
cmp ecx, 0xb06
jne 0x41017c
fstp st(0)
mov byte [esp + 0x13], 1
fld qword [0x596cf8]
fst qword [esp + 0x14]
jmp 0x410183
fstp st(0)
mov byte [esp + 0x13], 1
fld qword [0x596cf0]
fst qword [esp + 0x14]
jmp 0x410183
fstp st(0)
mov byte [esp + 0x13], 1
fld qword [0x596ce8]
fst qword [esp + 0x14]
jmp 0x410183
fstp st(0)
mov byte [esp + 0x13], 1
fld qword [0x596ce0]
fst qword [esp + 0x14]
jmp 0x410183
fstp st(0)
mov byte [esp + 0x13], 1
fld qword [0x596cd8]
fst qword [esp + 0x14]
jmp 0x410183
cmp byte [esp + 0x13], 0
je 0x41019c
fidivr dword [esp + 0x28]
sub esp, 8
lea eax, [esp + 0x204]
fstp qword [esp]
push str._.1f
push eax
jmp 0x4101b3
fidivr dword [esp + 0x28]
sub esp, 8
lea ecx, [esp + 0x204]
fstp qword [esp]
push str._.0f
push ecx
call fcn.00540420
add esp, 0x10
test esi, esi
je 0x4101ed
lea eax, [esp + 0xfc]
add eax, 0xffffffff
lea esp, [esp]
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x4101d0
mov dx, word [0x596cc4]
mov cl, byte [0x596cc6]
mov word [eax], dx
mov byte [eax + 2], cl
lea eax, [esp + 0x1fc]
mov esi, eax
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x4101f6
lea edi, [esp + 0xfc]
sub eax, esi
add edi, 0xffffffff
jmp 0x410210
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x410210
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [esp + 0x20]
add eax, 1
and ecx, 3
mov dword [esp + 0x20], eax
lea eax, [ebx + eax*4 + 0x21c]
rep movsb byte es:[edi], byte [esi]
cmp dword [eax], 0xffffffff
jne 0x40ffd3
jmp 0x410247
fstp st(0)
lea eax, [esp + 0xfc]
add eax, 0xffffffff
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x410251
mov dx, word [0x596cc0]
mov cl, byte [0x596cc2]
mov word [eax], dx
mov byte [eax + 2], cl
xor esi, esi
lea edx, [esp + 0xfc]
push edx
call fcn.0040b400
push 0x596192
call fcn.0040b400
add esp, 8
test byte [ebx], 8
je 0x4102db
mov eax, dword [ebx + 0x83c3]
cmp eax, esi
je 0x410347
movzx eax, byte [eax + 4]
and eax, 1
push eax
push ecx
mov ecx, esp
mov dword [esp + 0x1c], esp
push 0xc9
push ecx
call fcn.00408fe0
lea edx, [esp + 0x10c]
add esp, 8
push edx
call fcn.0040bc20
push eax
call fcn.0040b400
mov eax, dword [ebx + 0x83c3]
movzx ecx, byte [eax + 4]
shr ecx, 1
jmp 0x410315
movzx ecx, byte [ebx + 0x6d]
shr ecx, 5
and ecx, 1
push ecx
push ecx
mov edx, esp
mov dword [esp + 0x1c], esp
push 0xc9
push edx
call fcn.00408fe0
lea eax, [esp + 0x10c]
add esp, 8
push eax
call fcn.0040bc20
push eax
call fcn.0040b400
movzx ecx, byte [ebx + 0x6b]
shr ecx, 4
add esp, 0x10
and ecx, 1
push ecx
push ecx
mov edx, esp
mov dword [esp + 0x1c], esp
push 0xca
push edx
call fcn.00408fe0
lea eax, [esp + 0x10c]
add esp, 8
push eax
call fcn.0040bc20
push eax
call fcn.0040b400
add esp, 0x10
xor edi, edi
cmp dword [ebx + 0x8417], esi
mov dword [esp + 0x3c], esi
mov dword [esp + 0x68], esi
mov dword [esp + 0x90], esi
mov dword [esp + 0x28], esi
mov dword [esp + 0x70], esi
mov dword [esp + 0x34], esi
mov dword [esp + 0x44], esi
mov dword [esp + 0x20], esi
mov dword [esp + 0x38], esi
mov dword [esp + 0x30], esi
mov dword [esp + 0x7c], esi
mov dword [esp + 0x8c], esi
mov dword [esp + 0x94], esi
mov dword [esp + 0x48], esi
mov dword [esp + 0x4c], esi
mov dword [esp + 0x54], esi
mov dword [esp + 0x88], esi
mov dword [esp + 0x50], esi
mov dword [esp + 0x78], esi
mov dword [esp + 0x58], esi
mov dword [esp + 0x98], esi
mov dword [esp + 0x60], esi
mov dword [esp + 0x5c], esi
mov dword [esp + 0x64], esi
mov dword [esp + 0x6c], esi
mov dword [esp + 0x74], esi
mov dword [esp + 0x40], esi
mov dword [esp + 0x80], esi
mov dword [esp + 0x84], esi
mov dword [esp + 0x2c], esi
mov dword [esp + 0x14], esi
jne 0x4103f2
cmp dword [ebx + 0x841b], esi
jne 0x4103f2
cmp dword [ebx + 0x841f], esi
je 0x41040b
mov edx, 1
mov dword [esp + 0x94], edx
mov dword [esp + 0x48], edx
mov dword [esp + 0x8c], edx
jmp 0x410410
mov edx, 1
mov ecx, dword [ebx + 0x841b]
cmp ecx, esi
jne 0x41043c
mov eax, dword [ebx + 0x841f]
cmp eax, esi
je 0x410440
cmp word [eax + 0x10], si
jne 0x41043c
cmp word [eax + 0x12], si
jne 0x41043c
cmp word [eax + 0x14], si
jne 0x41043c
cmp word [eax + 0x16], si
je 0x410440
mov dword [esp + 0x4c], edx
cmp dword [ebx + 0x841f], esi
jne 0x410464
cmp ecx, esi
je 0x410468
cmp word [ecx + 8], si
jne 0x410464
cmp word [ecx + 0xa], si
jne 0x410464
cmp word [ecx + 0xc], si
jne 0x410464
cmp word [ecx + 0xe], si
je 0x410468
mov dword [esp + 0x54], edx
mov al, byte [ebx]
test al, 0x10
je 0x410485
test dword [ebx + 0x846f], 0x400
je 0x410485
mov dword [esp + 0x20], edx
mov dword [esp + 0x90], edx
test al, 8
je 0x410654
cmp dword [ebx + 0x8407], esi
je 0x41049d
mov dword [esp + 0x3c], edx
mov dword [esp + 0x68], edx
mov eax, dword [ebx + 0x83ef]
cmp eax, esi
je 0x4104b9
test byte [eax + 4], 1
mov dword [esp + 0x38], edx
mov dword [esp + 0x30], edx
je 0x4104b9
mov dword [esp + 0x70], edx
mov eax, dword [ebx + 0x83f3]
cmp eax, esi
je 0x4104d5
test byte [eax + 4], 1
mov dword [esp + 0x38], edx
mov dword [esp + 0x30], edx
je 0x4104d5
mov dword [esp + 0x28], edx
test dword [ebx + 0x846f], 0x100
je 0x4104e5
mov dword [esp + 0x28], edx
mov eax, dword [ebx + 0x83f7]
cmp eax, esi
je 0x4104fd
test byte [eax + 4], 1
je 0x4104f9
mov dword [esp + 0x44], edx
mov dword [esp + 0x7c], edx
mov eax, dword [ebx + 0x83c7]
cmp eax, esi
je 0x410511
test byte [eax + 6], 1
je 0x410511
mov dword [esp + 0x20], edx
mov edx, dword [ebx + 0x8423]
cmp edx, esi
je 0x410588
mov eax, edx
cmp byte [eax + 4], 0
movzx ecx, byte [eax + 3]
mov dword [esp + 0x88], 1
je 0x410541
cmp ecx, esi
jle 0x410541
mov eax, 1
mov dword [esp + 0x50], eax
jmp 0x410546
mov eax, 1
cmp byte [edx + 5], 0
je 0x410554
cmp ecx, eax
jle 0x410554
mov dword [esp + 0x78], eax
cmp byte [edx + 6], 0
je 0x410563
cmp ecx, 2
jle 0x410563
mov dword [esp + 0x58], eax
cmp byte [edx + 8], 0
je 0x410575
cmp ecx, 4
jle 0x410575
mov dword [esp + 0x98], eax
cmp byte [edx + 9], 0
je 0x410588
cmp ecx, 5
jle 0x410588
mov dword [esp + 0x60], 1
mov edx, dword [ebx + 0x8427]
cmp edx, esi
je 0x4105ed
mov eax, edx
cmp byte [eax + 4], 0
movzx ecx, byte [eax + 3]
je 0x4105ad
cmp ecx, esi
jle 0x4105ad
mov eax, 1
mov dword [esp + 0x5c], eax
jmp 0x4105b2
mov eax, 1
cmp byte [edx + 5], 0
je 0x4105c0
cmp ecx, eax
jle 0x4105c0
mov dword [esp + 0x64], eax
cmp byte [edx + 6], 0
je 0x4105cf
cmp ecx, 2
jle 0x4105cf
mov dword [esp + 0x6c], eax
cmp byte [edx + 8], 0
je 0x4105de
cmp ecx, 4
jle 0x4105de
mov dword [esp + 0x74], eax
cmp byte [edx + 9], 0
je 0x4105ed
cmp ecx, 5
jle 0x4105ed
mov dword [esp + 0x40], eax
cmp dword [ebx + 0x83ff], esi
mov ecx, 1
je 0x41061c
mov edx, dword [ebx + 0x83ff]
mov al, byte [edx + 4]
movzx edx, al
shr edx, 6
and edx, ecx
test al, 0x40
mov dword [esp + 0x34], ecx
mov edi, edx
jne 0x41061c
movzx edi, byte [ebx + 0x6a]
shr edi, 7
cmp dword [ebx + 0x83eb], esi
je 0x410628
mov dword [esp + 0x14], ecx
cmp dword [ebx + 0x842b], esi
je 0x410637
mov dword [esp + 0x80], ecx
cmp dword [ebx + 0x842f], esi
je 0x410646
mov dword [esp + 0x84], ecx
cmp dword [ebx + 0x8433], esi
je 0x410670
mov dword [esp + 0x2c], ecx
jmp 0x410670
movzx eax, byte [ebx + 0x69]
movzx edi, byte [ebx + 0x6a]
mov ecx, eax
shr ecx, 4
and ecx, edx
and eax, edx
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x34], eax
shr edi, 7
movzx ecx, byte [ebx + 0x68]
movzx eax, byte [ebx + 0x69]
and ecx, 1
push ecx
shr eax, 1
and eax, 1
push str.CD_R
push 0xcb
mov esi, eax
call fcn.0040bad0
add esp, 8
push eax
lea edx, [esp + 0x104]
push edx
call fcn.0040c1e0
push eax
call fcn.0040b400
movzx eax, byte [ebx + 0x68]
shr eax, 1
add esp, 0x10
and eax, 1
push eax
push str.CD_RW
push 0xcb
call fcn.0040bad0
add esp, 8
push eax
lea ecx, [esp + 0x104]
push ecx
call fcn.0040c1e0
push eax
call fcn.0040b400
movzx edx, byte [ebx + 0x68]
shr edx, 3
add esp, 0x10
and edx, 1
push edx
push str.DVD_ROM
push 0xcb
call fcn.0040bad0
add esp, 8
push eax
lea eax, [esp + 0x104]
push eax
call fcn.0040c1e0
push eax
call fcn.0040b400
movzx ecx, byte [ebx + 0x68]
shr ecx, 5
add esp, 0x10
and ecx, 1
push ecx
push str.DVD_RAM
push 0xcb
call fcn.0040bad0
add esp, 8
push eax
lea edx, [esp + 0x104]
push edx
call fcn.0040c1e0
push eax
call fcn.0040b400
movzx eax, byte [ebx + 0x68]
shr eax, 4
add esp, 0x10
and eax, 1
push eax
push str.DVD_R
push 0xcb
call fcn.0040bad0
add esp, 8
push eax
lea ecx, [esp + 0x104]
push ecx
call fcn.0040c1e0
push eax
call fcn.0040b400
movzx edx, byte [ebx + 0x68]
shr edx, 4
add esp, 0x10
and edx, 1
push edx
push str.DVD_RW
push 0xcb
call fcn.0040bad0
add esp, 8
push eax
lea eax, [esp + 0x104]
push eax
call fcn.0040c1e0
push eax
call fcn.0040b400
mov ecx, dword [esp + 0x30]
add esp, 0x10
push ecx
push str.DVD_R_DL
push 0xcb
call fcn.0040bad0
add esp, 8
push eax
lea edx, [esp + 0x104]
push edx
call fcn.0040c1e0
push eax
call fcn.0040b400
mov eax, dword [esp + 0x48]
add esp, 0x10
push eax
push str.DVDR
push 0xcb
call fcn.0040bad0
add esp, 8
push eax
lea ecx, [esp + 0x104]
push ecx
call fcn.0040c1e0
push eax
call fcn.0040b400
mov edx, dword [esp + 0x40]
add esp, 0x10
push edx
push str.DVDRW
push 0xcb
call fcn.0040bad0
add esp, 8
push eax
lea eax, [esp + 0x104]
push eax
call fcn.0040c1e0
push eax
call fcn.0040b400
mov ecx, dword [esp + 0x8c]
add esp, 0x10
push ecx
push str.DVDR_DL
push 0xcb
call fcn.0040bad0
add esp, 8
push eax
lea edx, [esp + 0x104]
push edx
call fcn.0040c1e0
push eax
call fcn.0040b400
mov eax, dword [esp + 0x9c]
add esp, 0x10
push eax
push str.BD_ROM
push 0xcb
call fcn.0040bad0
add esp, 8
push eax
lea ecx, [esp + 0x104]
push ecx
call fcn.0040c1e0
push eax
call fcn.0040b400
mov edx, dword [esp + 0xa4]
add esp, 0x10
push edx
push str.BD_R
push 0xcb
call fcn.0040bad0
add esp, 8
push eax
lea eax, [esp + 0x104]
push eax
call fcn.0040c1e0
push eax
call fcn.0040b400
mov ecx, dword [esp + 0x58]
add esp, 0x10
push ecx
push str.BD_RE
push 0xcb
call fcn.0040bad0
add esp, 8
push eax
lea edx, [esp + 0x104]
push edx
call fcn.0040c1e0
push eax
call fcn.0040b400
mov eax, dword [esp + 0x98]
add esp, 0x10
push eax
push str.HD_DVD_ROM
push 0xcb
call fcn.0040bad0
add esp, 8
push eax
lea ecx, [esp + 0x104]
push ecx
call fcn.0040c1e0
push eax
call fcn.0040b400
mov edx, dword [esp + 0x60]
add esp, 0x10
push edx
push str.HD_DVD_R
push 0xcb
call fcn.0040bad0
add esp, 8
push eax
lea eax, [esp + 0x104]
push eax
call fcn.0040c1e0
push eax
call fcn.0040b400
mov ecx, dword [esp + 0x88]
add esp, 0x10
push ecx
push str.HD_DVD_R_DL
push 0xcb
call fcn.0040bad0
add esp, 8
push eax
lea edx, [esp + 0x104]
push edx
call fcn.0040c1e0
push eax
call fcn.0040b400
mov eax, dword [esp + 0x68]
add esp, 0x10
push eax
push str.HD_DVD_RAM
push 0xcb
call fcn.0040bad0
add esp, 8
push eax
lea ecx, [esp + 0x104]
push ecx
call fcn.0040c1e0
push eax
call fcn.0040b400
mov edx, dword [esp + 0xa8]
add esp, 0x10
push edx
push str.HD_DVD_RW
push 0xcb
call fcn.0040bad0
add esp, 8
push eax
lea eax, [esp + 0x104]
push eax
call fcn.0040c1e0
push eax
call fcn.0040b400
mov ecx, dword [esp + 0x70]
add esp, 0x10
push ecx
push str.HD_DVD_RW_DL
push 0xcb
call fcn.0040bad0
add esp, 8
push eax
lea edx, [esp + 0x104]
push edx
call fcn.0040c1e0
push eax
call fcn.0040b400
mov eax, dword [esp + 0x90]
add esp, 0x10
push eax
push str.HD_BURN
push 0xcb
call fcn.0040bad0
add esp, 8
push eax
lea ecx, [esp + 0x104]
push ecx
call fcn.0040c1e0
push eax
call fcn.0040b400
movzx edx, byte [ebx + 0x6b]
add esp, 0x10
and edx, 1
push edx
push str.Digital_Audio
push 0xcb
call fcn.0040bad0
add esp, 8
push eax
lea eax, [esp + 0x104]
push eax
call fcn.0040c1e0
push eax
call fcn.0040b400
movzx eax, byte [ebx + 0x6b]
mov ecx, eax
shr ecx, 1
or ecx, eax
shr ecx, 2
add esp, 0x10
and ecx, 1
push ecx
push str.CDG
push 0xcb
call fcn.0040bad0
add esp, 8
push eax
lea edx, [esp + 0x104]
push edx
call fcn.0040c1e0
push eax
call fcn.0040b400
movzx eax, byte [ebx + 0x6a]
shr eax, 5
add esp, 0x10
and eax, 1
push eax
push str.VideoCD
push 0xcb
call fcn.0040bad0
add esp, 8
push eax
lea ecx, [esp + 0x104]
push ecx
call fcn.0040c1e0
push eax
call fcn.0040b400
push 0x596192
call fcn.0040b400
add esp, 0x14
mov edx, dword [esp + 0x34]
push edx
push str.CD_R
push 0xcc
call fcn.0040bad0
add esp, 8
push eax
lea eax, [esp + 0x104]
push eax
call fcn.0040c1e0
push eax
call fcn.0040b400
add esp, 0x10
push esi
push str.CD_RW
push 0xcc
call fcn.0040bad0
add esp, 8
push eax
lea ecx, [esp + 0x104]
push ecx
call fcn.0040c1e0
push eax
call fcn.0040b400
mov edx, dword [esp + 0x4c]
add esp, 0x10
push edx
push str.DVD_R
push 0xcc
call fcn.0040bad0
add esp, 8
push eax
lea eax, [esp + 0x104]
push eax
call fcn.0040c1e0
push eax
call fcn.0040b400
mov ecx, dword [esp + 0x78]
add esp, 0x10
push ecx
push str.DVD_RW
push 0xcc
call fcn.0040bad0
add esp, 8
push eax
lea edx, [esp + 0x104]
push edx
call fcn.0040c1e0
push eax
call fcn.0040b400
mov eax, dword [esp + 0xa0]
add esp, 0x10
push eax
push str.DVD_R_DL
push 0xcc
call fcn.0040bad0
add esp, 8
push eax
lea ecx, [esp + 0x104]
push ecx
call fcn.0040c1e0
push eax
call fcn.0040b400
mov edx, dword [esp + 0x38]
add esp, 0x10
push edx
push str.DVDR
push 0xcc
call fcn.0040bad0
add esp, 8
push eax
lea eax, [esp + 0x104]
push eax
call fcn.0040c1e0
push eax
call fcn.0040b400
mov ecx, dword [esp + 0x80]
add esp, 0x10
push ecx
push str.DVDRW
push 0xcc
call fcn.0040bad0
add esp, 8
push eax
lea edx, [esp + 0x104]
push edx
call fcn.0040c1e0
push eax
call fcn.0040b400
mov eax, dword [esp + 0x54]
add esp, 0x10
push eax
push str.DVDR_DL
push 0xcc
call fcn.0040bad0
add esp, 8
push eax
lea ecx, [esp + 0x104]
push ecx
call fcn.0040c1e0
push eax
call fcn.0040b400
add esp, 0x10
push 0
push str.DVD_RAM
push 0xcc
call fcn.0040bad0
add esp, 8
push eax
lea edx, [esp + 0x104]
push edx
call fcn.0040c1e0
push eax
call fcn.0040b400
movzx eax, byte [ebx + 0x69]
shr eax, 5
add esp, 0x10
and eax, 1
push eax
push str.DVD_RAM
push 0xcc
call fcn.0040bad0
add esp, 8
push eax
lea ecx, [esp + 0x104]
push ecx
call fcn.0040c1e0
push eax
call fcn.0040b400
mov edx, dword [esp + 0x5c]
add esp, 0x10
push edx
push str.BD_R
push 0xcc
call fcn.0040bad0
add esp, 8
push eax
lea eax, [esp + 0x104]
push eax
call fcn.0040c1e0
push eax
call fcn.0040b400
mov ecx, dword [esp + 0x64]
add esp, 0x10
push ecx
push str.BD_RE
push 0xcc
call fcn.0040bad0
add esp, 8
push eax
lea edx, [esp + 0x104]
push edx
call fcn.0040c1e0
push eax
call fcn.0040b400
mov eax, dword [esp + 0x6c]
add esp, 0x10
push eax
push str.HD_DVD_R
push 0xcc
call fcn.0040bad0
add esp, 8
push eax
lea ecx, [esp + 0x104]
push ecx
call fcn.0040c1e0
push eax
call fcn.0040b400
mov edx, dword [esp + 0x74]
add esp, 0x10
push edx
push str.HD_DVD_R_DL
push 0xcc
call fcn.0040bad0
add esp, 8
push eax
lea eax, [esp + 0x104]
push eax
call fcn.0040c1e0
push eax
call fcn.0040b400
mov ecx, dword [esp + 0x7c]
add esp, 0x10
push ecx
push str.HD_DVD_RAM
push 0xcc
call fcn.0040bad0
add esp, 8
push eax
lea edx, [esp + 0x104]
push edx
call fcn.0040c1e0
push eax
call fcn.0040b400
mov eax, dword [esp + 0x84]
add esp, 0x10
push eax
push str.HD_DVD_RW
push 0xcc
call fcn.0040bad0
add esp, 8
push eax
lea ecx, [esp + 0x104]
push ecx
call fcn.0040c1e0
push eax
call fcn.0040b400
mov edx, dword [esp + 0x50]
add esp, 0x10
push edx
push str.HD_DVD_RW_DL
push 0xcc
call fcn.0040bad0
add esp, 8
push eax
lea eax, [esp + 0x104]
push eax
call fcn.0040c1e0
push eax
call fcn.0040b400
mov ecx, dword [esp + 0x94]
add esp, 0x10
push ecx
push str.HD_BURN_R
push 0xcc
call fcn.0040bad0
add esp, 8
push eax
lea edx, [esp + 0x104]
push edx
call fcn.0040c1e0
push eax
call fcn.0040b400
mov eax, dword [esp + 0x3c]
add esp, 0x10
push eax
push str.HD_BURN_RW
push 0xcc
call fcn.0040bad0
add esp, 8
push eax
lea ecx, [esp + 0x104]
push ecx
call fcn.0040c1e0
push eax
call fcn.0040b400
add esp, 0x10
push edi
push ecx
mov edx, esp
mov dword [esp + 0x34], esp
push 0xcd
push edx
call fcn.00408fe0
lea eax, [esp + 0x10c]
add esp, 8
push eax
call fcn.0040bc20
push eax
call fcn.0040b400
mov ecx, dword [esp + 0x24]
add esp, 0x10
push ecx
push ecx
mov edx, esp
mov dword [esp + 0x1c], esp
push 0xce
push edx
call fcn.00408fe0
lea eax, [esp + 0x10c]
add esp, 8
push eax
call fcn.0040bc20
push eax
call fcn.0040b400
movzx ecx, byte [ebx + 0x8477]
add esp, 0x10
push ecx
push ecx
mov edx, esp
mov dword [esp + 0x1c], esp
push 0xcf
push edx
call fcn.00408fe0
lea eax, [esp + 0x10c]
add esp, 8
push eax
call fcn.0040bc20
push eax
call fcn.0040b400
movzx ecx, byte [ebx + 0x8478]
add esp, 0x10
push ecx
push ecx
mov edx, esp
mov dword [esp + 0x1c], esp
push 0xd0
push edx
call fcn.00408fe0
lea eax, [esp + 0x10c]
add esp, 8
push eax
call fcn.0040bc20
push eax
call fcn.0040b400
xor ecx, ecx
cmp dword [ebx + 0x8473], 3
lea edx, [esp + 0x10c]
sete cl
push ecx
push str.LightScribe
push edx
call fcn.0040bb30
push eax
call fcn.0040b400
add esp, 0x20
xor esi, esi
xor al, al
xor ecx, ecx
mov byte [esp + 0x1fc], 0
mov dword [esp + 0x14], ecx
nop
mov edi, 1
shl edi, cl
test dword [ebx + 0x80], edi
je 0x410fe7
test al, al
je 0x410f9e
lea eax, [esp + 0x1fc]
add eax, 0xffffffff
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x410f81
mov cx, word [0x596cc4]
mov dl, byte [0x596cc6]
mov word [eax], cx
mov byte [eax + 2], dl
push edi
mov byte [esp + 0x2b], 1
call fcn.00418540
add esp, 4
mov esi, eax
mov edi, edi
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x410fb0
lea edi, [esp + 0x1fc]
sub eax, esi
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x410fc5
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov al, byte [esp + 0x27]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x14]
xor esi, esi
add ecx, 1
cmp ecx, 0xa
mov dword [esp + 0x14], ecx
jl 0x410f60
test al, al
jne 0x411006
mov dword [esp + 0x1fc], 0x612f6e
lea eax, [esp + 0x1fc]
push eax
lea ecx, [esp + 0x100]
push str.Modes:_s
push ecx
call fcn.00540420
lea edx, [esp + 0x108]
push edx
call fcn.0040b400
push 0x596192
call fcn.0040b400
add esp, 0x14
test byte [ebx], 4
jne 0x41104b
test byte [ebx + 0x68], 8
je 0x411393
xor esi, esi
movzx eax, byte [ebx + 0x8a]
mov dword [esp + 0x14], eax
cmp eax, esi
mov eax, str.RPC_II
jne 0x411064
mov eax, str.RPC_I
push eax
push ecx
mov ecx, esp
mov dword [esp + 0x34], esp
push 0x5969b0
call fcn.00402a30
lea eax, [esp + 0xc8]
push 0xd2
push eax
call fcn.00409d00
mov ecx, dword [eax]
add esp, 0xc
push ecx
lea edx, [esp + 0x104]
push 0x5962e8
push edx
call fcn.00540420
mov eax, dword [esp + 0xd0]
add eax, 0xfffffff0
add esp, 0x10
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4110c6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0xfc]
push ecx
call fcn.0040b400
movzx edx, byte [ebx + 0x89]
add esp, 4
and edx, 0x3f
mov esi, edx
jne 0x411129
lea eax, [esp + 0xc8]
push 0xd3
push eax
call fcn.00408fe0
mov ecx, dword [eax]
add esp, 8
lea edx, [esp + 0x1fc]
mov al, byte [ecx]
mov byte [edx], al
add ecx, 1
add edx, 1
test al, al
jne 0x411102
mov eax, dword [esp + 0xc8]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jmp 0x411175
cmp esi, 0x3f
jne 0x411183
lea ecx, [esp + 0xd0]
push 0x16b
push ecx
call fcn.00408fe0
mov ecx, dword [eax]
add esp, 8
lea edx, [esp + 0x1fc]
lea esp, [esp]
mov al, byte [ecx]
mov byte [edx], al
add ecx, 1
add edx, 1
test al, al
jne 0x411150
mov eax, dword [esp + 0xd0]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4111be
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x4111be
xor edi, edi
mov ecx, edi
mov edx, esi
sar edx, cl
add edi, 1
test dl, 1
je 0x41119a
cmp edi, 6
jl 0x411185
jmp 0x4111a1
mov dword [esp + 0xd8], edi
mov eax, dword [esp + 0xd8]
push eax
lea ecx, [esp + 0x200]
push 0x596ba0
push ecx
call fcn.00540420
add esp, 0xc
lea edx, [esp + 0x1fc]
push edx
push ecx
mov ecx, esp
mov dword [esp + 0x34], esp
push 0x5969b0
call fcn.00402a30
lea eax, [esp + 0xe8]
push 0xd5
push eax
call fcn.00409d00
mov ecx, dword [eax]
add esp, 0xc
push ecx
lea edx, [esp + 0x104]
push 0x5962e8
push edx
call fcn.00540420
mov eax, dword [esp + 0xf0]
add eax, 0xfffffff0
add esp, 0x10
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x411227
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0xfc]
push ecx
call fcn.0040b400
add esp, 4
cmp dword [esp + 0x14], 0
jne 0x411298
push ecx
mov dword [esp + 0x18], esp
mov esi, esp
push ecx
mov ecx, esp
mov dword [esp + 0x1c], esp
push 0x5969b0
call fcn.00402a30
push 0xd6
push esi
call fcn.00409d00
add esp, 0xc
call fcn.0040ba60
mov dword [esp + 0x18], esp
mov esi, esp
push ecx
mov ecx, esp
mov dword [esp + 0x1c], esp
push 0x5969b0
call fcn.00402a30
push 0xd7
push esi
call fcn.00409d00
add esp, 0xc
call fcn.0040ba60
jmp 0x411390
movzx edx, byte [ebx + 0x88]
and edx, 7
push edx
push ecx
mov ecx, esp
mov dword [esp + 0x1c], esp
push 0x5969b0
call fcn.00402a30
lea eax, [esp + 0xf0]
push 0xd6
push eax
call fcn.00409d00
mov ecx, dword [eax]
add esp, 0xc
push ecx
lea edx, [esp + 0x104]
push str._s_d
push edx
call fcn.00540420
mov eax, dword [esp + 0xf8]
add eax, 0xfffffff0
add esp, 0x10
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x411304
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0xfc]
push ecx
call fcn.0040b400
movzx edx, byte [ebx + 0x88]
add esp, 4
shr edx, 3
and edx, 7
push edx
push ecx
mov ecx, esp
mov dword [esp + 0x1c], esp
push 0x5969b0
call fcn.00402a30
lea eax, [esp + 0xf8]
push 0xd7
push eax
call fcn.00409d00
mov ecx, dword [eax]
add esp, 0xc
push ecx
lea edx, [esp + 0x104]
push str._s_d
push edx
call fcn.00540420
mov eax, dword [esp + 0x100]
add eax, 0xfffffff0
add esp, 0x10
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x411383
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0xfc]
push ecx
call fcn.0040b400
add esp, 4
push 0x596192
call fcn.0040b400
xor edx, edx
cmp dword [ebx + 0x844f], edx
lea eax, [esp + 0x100]
setne dl
push edx
push 0x596b9c
push eax
call fcn.0040bb30
push eax
call fcn.0040b400
xor ecx, ecx
cmp dword [ebx + 0x8463], ecx
lea edx, [esp + 0x110]
setne cl
push ecx
push str.CPRM
push edx
call fcn.0040bb30
push eax
call fcn.0040b400
xor eax, eax
cmp dword [ebx + 0x8467], eax
lea ecx, [esp + 0x120]
setne al
push eax
push str.AACS
push ecx
call fcn.0040bb30
push eax
call fcn.0040b400
xor edx, edx
cmp dword [ebx + 0x846b], edx
lea eax, [esp + 0x130]
setne dl
push edx
push str.VCPS
push eax
call fcn.0040bb30
add esp, 0x40
push eax
call fcn.0040b400
push 0x596192
call fcn.0040b400
mov eax, dword [0x60e340]
mov esi, dword [esp + 0xa4]
add esp, 8
cmp byte [eax + 9], 0
je 0x41146d
mov ecx, dword [ebx + 0x29]
mov eax, dword [eax]
mov edx, esi
imul edx, edx, 0x62c
push ecx
lea ecx, [edx + eax + 0x1092a8]
push ecx
call fcn.0040c9c0
add esp, 8
push 0x596b3c
call fcn.0040b400
mov eax, dword [0x60e340]
mov ecx, dword [eax]
add esi, 1
add esp, 4
cmp esi, dword [ecx + 4]
mov dword [esp + 0x9c], esi
jl 0x40f3d9
mov ecx, dword [esp + 0x338]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2f0]
xor ecx, esp
call fcn.0053fab2
mov esp, ebp
pop ebp
ret