Annotation of frontvm/hardware/hostcall.s, revision 1.1.1.1

1.1       root        1:        .file   "hostcall.c"
                      2:        .text
                      3:        .p2align 4,,15
                      4: .globl time2dos
                      5:        .type   time2dos, @function
                      6: time2dos:
                      7:        pushl   %ebp
                      8:        movl    %esp, %ebp
                      9:        leal    8(%ebp), %eax
                     10:        subl    $8, %esp
                     11:        movl    %eax, (%esp)
                     12:        call    localtime
                     13:        movl    %eax, %ecx
                     14:        movl    4(%ecx), %edx
                     15:        movl    (%eax), %eax
                     16:        sall    $5, %edx
                     17:        sarl    %eax
                     18:        orl     %edx, %eax
                     19:        movl    8(%ecx), %edx
                     20:        movl    %ebp, %esp
                     21:        popl    %ebp
                     22:        sall    $11, %edx
                     23:        orl     %edx, %eax
                     24:        movzwl  %ax, %eax
                     25:        ret
                     26:        .size   time2dos, .-time2dos
                     27:        .p2align 4,,15
                     28: .globl date2dos
                     29:        .type   date2dos, @function
                     30: date2dos:
                     31:        pushl   %ebp
                     32:        movl    %esp, %ebp
                     33:        leal    8(%ebp), %eax
                     34:        subl    $8, %esp
                     35:        movl    %eax, (%esp)
                     36:        call    localtime
                     37:        movl    %eax, %ecx
                     38:        movl    16(%eax), %eax
                     39:        movzwl  12(%ecx), %edx
                     40:        movl    20(%ecx), %ecx
                     41:        incl    %eax
                     42:        sall    $5, %eax
                     43:        movl    %ebp, %esp
                     44:        subl    $80, %ecx
                     45:        popl    %ebp
                     46:        orl     %edx, %eax
                     47:        movl    %ecx, %edx
                     48:        shrl    $31, %edx
                     49:        decl    %edx
                     50:        andl    %edx, %ecx
                     51:        sall    $9, %ecx
                     52:        orl     %ecx, %eax
                     53:        movzwl  %ax, %eax
                     54:        ret
                     55:        .size   date2dos, .-date2dos
                     56:        .p2align 4,,15
                     57: .globl GetFileInformation
                     58:        .type   GetFileInformation, @function
                     59: GetFileInformation:
                     60:        pushl   %ebp
                     61:        movl    %esp, %ebp
                     62:        leal    -104(%ebp), %eax
                     63:        subl    $120, %esp
                     64:        movl    %eax, 8(%esp)
                     65:        movl    8(%ebp), %eax
                     66:        movl    %esi, -4(%ebp)
                     67:        movl    12(%ebp), %esi
                     68:        movl    %ebx, -8(%ebp)
                     69:        movl    %eax, 4(%esp)
                     70:        movl    $3, (%esp)
                     71:        call    __xstat
                     72:        xorl    %edx, %edx
                     73:        testl   %eax, %eax
                     74:        je      .L8
                     75: .L4:
                     76:        movl    -8(%ebp), %ebx
                     77:        movl    %edx, %eax
                     78:        movl    -4(%ebp), %esi
                     79:        movl    %ebp, %esp
                     80:        popl    %ebp
                     81:        ret
                     82:        .p2align 4,,7
                     83: .L8:
                     84:        leal    -40(%ebp), %eax
                     85:        movl    %eax, (%esp)
                     86:        call    localtime
                     87:        movzwl  12(%eax), %ebx
                     88:        movl    16(%eax), %edx
                     89:        movl    20(%eax), %ecx
                     90:        andl    $15, %edx
                     91:        andl    $31, %ebx
                     92:        sall    $5, %edx
                     93:        subl    $80, %ecx
                     94:        orl     %edx, %ebx
                     95:        movl    %ecx, %edx
                     96:        shrl    $31, %edx
                     97:        decl    %edx
                     98:        andl    %edx, %ecx
                     99:        andl    $127, %ecx
                    100:        movl    4(%eax), %edx
                    101:        sall    $9, %ecx
                    102:        orl     %ecx, %ebx
                    103:        andl    $63, %edx
                    104:        sall    $5, %edx
                    105:        movzwl  (%eax), %ecx
                    106:        movl    8(%eax), %eax
                    107:        movw    %bx, (%esi)
                    108:        andl    $31, %ecx
                    109:        andl    $31, %eax
                    110:        orl     %edx, %ecx
                    111:        sall    $11, %eax
                    112:        orl     %eax, %ecx
                    113:        movw    %cx, 2(%esi)
                    114:        movl    $1, %edx
                    115:        jmp     .L4
                    116:        .size   GetFileInformation, .-GetFileInformation
                    117:        .section        .rodata.str1.1,"aMS",@progbits,1
                    118: .LC0:
                    119:        .string "%s/%s"
                    120:        .text
                    121:        .p2align 4,,15
                    122: .globl PopulateDTA
                    123:        .type   PopulateDTA, @function
                    124: PopulateDTA:
                    125:        pushl   %ebp
                    126:        movl    %esp, %ebp
                    127:        subl    $376, %esp
                    128:        movl    %esi, -4(%ebp)
                    129:        movl    8(%ebp), %eax
                    130:        movl    12(%ebp), %esi
                    131:        movl    %ebx, -8(%ebp)
                    132:        movl    $.LC0, %ebx
                    133:        addl    $11, %esi
                    134:        movl    %ebx, 4(%esp)
                    135:        leal    -264(%ebp), %ebx
                    136:        movl    %esi, 12(%esp)
                    137:        movl    %eax, 8(%esp)
                    138:        movl    %ebx, (%esp)
                    139:        call    sprintf
                    140:        movl    %ebx, 4(%esp)
                    141:        leal    -360(%ebp), %eax
                    142:        movl    %eax, 8(%esp)
                    143:        movl    $3, (%esp)
                    144:        call    __xstat
                    145:        xorl    %edx, %edx
                    146:        testl   %eax, %eax
                    147:        jne     .L9
                    148:        movl    pDTA, %ecx
                    149:        testl   %ecx, %ecx
                    150:        jne     .L16
                    151: .L9:
                    152:        movl    -8(%ebp), %ebx
                    153:        movl    %edx, %eax
                    154:        movl    -4(%ebp), %esi
                    155:        movl    %ebp, %esp
                    156:        popl    %ebp
                    157:        ret
                    158:        .p2align 4,,7
                    159: .L16:
                    160:        movl    %esi, (%esp)
                    161:        call    Misc_strupr
                    162:        movl    %esi, 4(%esp)
                    163:        movl    $14, %eax
                    164:        movl    %eax, 8(%esp)
                    165:        movl    pDTA, %eax
                    166:        addl    $30, %eax
                    167:        movl    %eax, (%esp)
                    168:        call    strncpy
                    169:        movl    pDTA, %ebx
                    170:        movl    -316(%ebp), %eax
                    171: #APP
                    172:        bswap   %eax
                    173: 
                    174: #NO_APP
                    175:        movl    %eax, 26(%ebx)
                    176:        movl    -296(%ebp), %eax
                    177:        movl    %eax, (%esp)
                    178:        call    time2dos
                    179:        movzwl  %ax, %eax
                    180: #APP
                    181:        xchgb %al,%ah
                    182: #NO_APP
                    183:        movw    %ax, 22(%ebx)
                    184:        movl    -296(%ebp), %eax
                    185:        movl    pDTA, %ebx
                    186:        movl    %eax, (%esp)
                    187:        call    date2dos
                    188:        movzwl  %ax, %eax
                    189: #APP
                    190:        xchgb %al,%ah
                    191: #NO_APP
                    192:        movw    %ax, 24(%ebx)
                    193:        movl    -344(%ebp), %eax
                    194:        movl    pDTA, %ebx
                    195:        movl    %eax, (%esp)
                    196:        call    GemDOS_ConvertAttribute
                    197:        movb    %al, 21(%ebx)
                    198:        movl    $1, %edx
                    199:        jmp     .L9
                    200:        .size   PopulateDTA, .-PopulateDTA
                    201:        .p2align 4,,15
                    202: .globl ClearInternalDTA
                    203:        .type   ClearInternalDTA, @function
                    204: ClearInternalDTA:
                    205:        pushl   %ebp
                    206:        movl    %esp, %ebp
                    207:        pushl   %ebx
                    208:        subl    $4, %esp
                    209:        movl    DTAIndex, %edx
                    210:        movl    %edx, %eax
                    211:        movl    %edx, %ecx
                    212:        sall    $4, %eax
                    213:        addl    %edx, %eax
                    214:        sall    $4, %eax
                    215:        movl    InternalDTAs+12(%eax), %ebx
                    216:        testl   %ebx, %ebx
                    217:        je      .L18
                    218:        xorl    %ebx, %ebx
                    219:        cmpl    InternalDTAs+4(%eax), %ebx
                    220:        jl      .L23
                    221: .L25:
                    222:        movl    %edx, %eax
                    223:        sall    $4, %eax
                    224:        addl    %edx, %eax
                    225:        sall    $4, %eax
                    226:        movl    InternalDTAs+12(%eax), %eax
                    227:        movl    %eax, (%esp)
                    228:        call    free
                    229:        movl    DTAIndex, %edx
                    230: .L18:
                    231:        movl    %edx, %eax
                    232:        sall    $4, %eax
                    233:        addl    %edx, %eax
                    234:        sall    $4, %eax
                    235:        xorl    %edx, %edx
                    236:        movl    %edx, InternalDTAs(%eax)
                    237:        popl    %eax
                    238:        popl    %ebx
                    239:        popl    %ebp
                    240:        ret
                    241:        .p2align 4,,7
                    242: .L23:
                    243:        movl    %ecx, %eax
                    244:        sall    $4, %eax
                    245:        addl    %ecx, %eax
                    246:        sall    $4, %eax
                    247:        movl    InternalDTAs+12(%eax), %eax
                    248:        movl    (%eax,%ebx,4), %eax
                    249:        incl    %ebx
                    250:        movl    %eax, (%esp)
                    251:        call    free
                    252:        movl    DTAIndex, %edx
                    253:        movl    %edx, %eax
                    254:        movl    %edx, %ecx
                    255:        sall    $4, %eax
                    256:        addl    %edx, %eax
                    257:        sall    $4, %eax
                    258:        cmpl    InternalDTAs+4(%eax), %ebx
                    259:        jl      .L23
                    260:        jmp     .L25
                    261:        .size   ClearInternalDTA, .-ClearInternalDTA
                    262:        .p2align 4,,15
                    263:        .type   match, @function
                    264: match:
                    265:        pushl   %ebp
                    266:        movl    %esp, %ebp
                    267:        leal    -280(%ebp), %eax
                    268:        pushl   %edi
                    269:        leal    -536(%ebp), %edi
                    270:        pushl   %esi
                    271:        pushl   %ebx
                    272:        subl    $540, %esp
                    273:        movl    12(%ebp), %esi
                    274:        movl    %eax, (%esp)
                    275:        movl    8(%ebp), %ebx
                    276:        movl    %ebx, 4(%esp)
                    277:        call    strcpy
                    278:        movl    %esi, 4(%esp)
                    279:        movl    %edi, (%esp)
                    280:        call    strcpy
                    281:        leal    -280(%ebp), %eax
                    282:        movl    %eax, (%esp)
                    283:        call    Misc_strupr
                    284:        movl    %edi, (%esp)
                    285:        call    Misc_strupr
                    286:        cmpb    $46, (%esi)
                    287:        je      .L34
                    288:        cmpb    $42, (%ebx)
                    289:        jne     .L28
                    290:        cmpb    $46, 1(%ebx)
                    291:        jne     .L28
                    292:        cmpb    $42, 2(%ebx)
                    293:        jne     .L28
                    294:        cmpb    $0, 3(%ebx)
                    295:        je      .L59
                    296:        .p2align 4,,15
                    297: .L28:
                    298:        movl    %esi, 4(%esp)
                    299:        movl    $1, %esi
                    300:        movl    %ebx, (%esp)
                    301:        call    strcasecmp
                    302:        testl   %eax, %eax
                    303:        je      .L26
                    304:        movzbl  -536(%ebp), %eax
                    305:        leal    -280(%ebp), %ebx
                    306:        movl    %edi, %ecx
                    307:        testb   %al, %al
                    308:        je      .L54
                    309:        .p2align 4,,15
                    310: .L51:
                    311:        movzbl  (%ebx), %edx
                    312:        cmpb    $42, %dl
                    313:        je      .L60
                    314:        cmpb    $63, %dl
                    315:        je      .L61
                    316: .L48:
                    317:        incl    %ecx
                    318:        incl    %ebx
                    319:        xorl    %esi, %esi
                    320:        cmpb    %al, %dl
                    321:        jne     .L26
                    322: .L58:
                    323:        movzbl  (%ecx), %eax
                    324: .L37:
                    325:        testb   %al, %al
                    326:        jne     .L51
                    327: .L54:
                    328:        cmpb    $0, (%ebx)
                    329:        jne     .L34
                    330: .L59:
                    331:        movl    $1, %esi
                    332:        .p2align 4,,15
                    333: .L26:
                    334:        addl    $540, %esp
                    335:        movl    %esi, %eax
                    336:        popl    %ebx
                    337:        popl    %esi
                    338:        popl    %edi
                    339:        popl    %ebp
                    340:        ret
                    341:        .p2align 4,,7
                    342: .L34:
                    343:        xorl    %esi, %esi
                    344:        jmp     .L26
                    345:        .p2align 4,,7
                    346: .L61:
                    347:        testb   %al, %al
                    348:        je      .L48
                    349:        incl    %ecx
                    350:        incl    %ebx
                    351:        jmp     .L58
                    352:        .p2align 4,,7
                    353: .L60:
                    354:        testb   %al, %al
                    355:        je      .L43
                    356:        cmpb    $46, %al
                    357:        je      .L43
                    358:        .p2align 4,,15
                    359: .L46:
                    360:        incl    %ecx
                    361:        movzbl  (%ecx), %eax
                    362:        testb   %al, %al
                    363:        je      .L43
                    364:        cmpb    $46, %al
                    365:        jne     .L46
                    366: .L43:
                    367:        incl    %ebx
                    368:        jmp     .L37
                    369:        .size   match, .-match
                    370:        .p2align 4,,15
                    371: .globl fsfirst_dirname
                    372:        .type   fsfirst_dirname, @function
                    373: fsfirst_dirname:
                    374:        pushl   %ebp
                    375:        movl    %esp, %ebp
                    376:        pushl   %edi
                    377:        pushl   %esi
                    378:        pushl   %ebx
                    379:        subl    $12, %esp
                    380:        xorl    %ebx, %ebx
                    381:        movl    12(%ebp), %esi
                    382:        movl    8(%ebp), %edi
                    383:        movl    %esi, (%esp)
                    384:        movl    %edi, 4(%esp)
                    385:        call    sprintf
                    386:        movzbl  (%esi), %eax
                    387:        testb   %al, %al
                    388:        je      .L77
                    389:        .p2align 4,,15
                    390: .L67:
                    391:        cmpb    $92, %al
                    392:        je      .L82
                    393: .L66:
                    394:        incl    %ebx
                    395:        movzbl  (%ebx,%esi), %eax
                    396:        testb   %al, %al
                    397:        jne     .L67
                    398: .L77:
                    399:        movzbl  (%ebx,%edi), %eax
                    400:        testb   %al, %al
                    401:        je      .L79
                    402:        .p2align 4,,15
                    403: .L71:
                    404:        movb    %al, (%ebx,%esi)
                    405:        incl    %ebx
                    406:        movzbl  (%ebx,%edi), %eax
                    407:        testb   %al, %al
                    408:        jne     .L71
                    409: .L79:
                    410:        cmpb    $47, (%ebx,%esi)
                    411:        je      .L81
                    412:        .p2align 4,,15
                    413: .L75:
                    414:        decl    %ebx
                    415:        cmpb    $47, (%ebx,%esi)
                    416:        jne     .L75
                    417: .L81:
                    418:        movb    $0, (%ebx,%esi)
                    419:        addl    $12, %esp
                    420:        popl    %ebx
                    421:        popl    %esi
                    422:        popl    %edi
                    423:        popl    %ebp
                    424:        ret
                    425:        .p2align 4,,7
                    426: .L82:
                    427:        movb    $47, (%ebx,%esi)
                    428:        jmp     .L66
                    429:        .size   fsfirst_dirname, .-fsfirst_dirname
                    430:        .p2align 4,,15
                    431: .globl fsfirst_dirmask
                    432:        .type   fsfirst_dirmask, @function
                    433: fsfirst_dirmask:
                    434:        pushl   %ebp
                    435:        xorl    %edx, %edx
                    436:        movl    %esp, %ebp
                    437:        pushl   %esi
                    438:        movl    8(%ebp), %ecx
                    439:        movl    12(%ebp), %esi
                    440:        pushl   %ebx
                    441:        xorl    %ebx, %ebx
                    442:        cmpb    $0, (%ecx)
                    443:        je      .L102
                    444:        .p2align 4,,15
                    445: .L87:
                    446:        incl    %edx
                    447:        movzbl  (%edx,%ecx), %eax
                    448:        testb   %al, %al
                    449:        jne     .L87
                    450: .L97:
                    451:        cmpb    $47, %al
                    452:        je      .L99
                    453:        .p2align 4,,15
                    454: .L91:
                    455:        decl    %edx
                    456:        cmpb    $47, (%edx,%ecx)
                    457:        jne     .L91
                    458: .L99:
                    459:        incl    %edx
                    460:        cmpb    $0, (%edx,%ecx)
                    461:        je      .L101
                    462:        .p2align 4,,15
                    463: .L95:
                    464:        movl    %edx, %eax
                    465:        incl    %edx
                    466:        movzbl  (%eax,%ecx), %eax
                    467:        movb    %al, (%ebx,%esi)
                    468:        incl    %ebx
                    469:        cmpb    $0, (%edx,%ecx)
                    470:        jne     .L95
                    471: .L101:
                    472:        movb    $0, (%ebx,%esi)
                    473:        popl    %ebx
                    474:        popl    %esi
                    475:        popl    %ebp
                    476:        ret
                    477: .L102:
                    478:        movzbl  (%ecx), %eax
                    479:        jmp     .L97
                    480:        .size   fsfirst_dirmask, .-fsfirst_dirmask
                    481:        .p2align 4,,15
                    482: .globl GemDOS_Init
                    483:        .type   GemDOS_Init, @function
                    484: GemDOS_Init:
                    485:        pushl   %ebp
                    486:        movl    $8448, %eax
                    487:        movl    %esp, %ebp
                    488:        subl    $8, %esp
                    489:        movl    %eax, 4(%esp)
                    490:        movl    $FileHandles, (%esp)
                    491:        call    Memory_Clear
                    492:        xorl    %eax, %eax
                    493:        movl    $255, %edx
                    494:        .p2align 4,,15
                    495: .L108:
                    496:        xorl    %ecx, %ecx
                    497:        movl    %ecx, InternalDTAs(%eax)
                    498:        xorl    %ecx, %ecx
                    499:        movl    %ecx, InternalDTAs+4(%eax)
                    500:        xorl    %ecx, %ecx
                    501:        movl    %ecx, InternalDTAs+12(%eax)
                    502:        addl    $272, %eax
                    503:        decl    %edx
                    504:        jns     .L108
                    505:        xorl    %eax, %eax
                    506:        movl    %eax, DTAIndex
                    507:        leave
                    508:        ret
                    509:        .size   GemDOS_Init, .-GemDOS_Init
                    510:        .p2align 4,,15
                    511: .globl GemDOS_Reset
                    512:        .type   GemDOS_Reset, @function
                    513: GemDOS_Reset:
                    514:        pushl   %ebp
                    515:        movl    %esp, %ebp
                    516:        pushl   %esi
                    517:        xorl    %esi, %esi
                    518:        pushl   %ebx
                    519:        subl    $16, %esp
                    520:        movl    $31, %ebx
                    521:        .p2align 4,,15
                    522: .L117:
                    523:        movl    FileHandles(%esi), %eax
                    524:        testl   %eax, %eax
                    525:        jne     .L127
                    526: .L116:
                    527:        xorl    %eax, %eax
                    528:        movl    %eax, FileHandles+4(%esi)
                    529:        xorl    %eax, %eax
                    530:        movl    %eax, FileHandles(%esi)
                    531:        addl    $264, %esi
                    532:        decl    %ebx
                    533:        jns     .L117
                    534:        xorl    %eax, %eax
                    535:        movl    $255, %ebx
                    536:        .p2align 4,,15
                    537: .L122:
                    538:        xorl    %esi, %esi
                    539:        xorl    %ecx, %ecx
                    540:        xorl    %edx, %edx
                    541:        movl    %esi, InternalDTAs(%eax)
                    542:        movl    %ecx, InternalDTAs+4(%eax)
                    543:        movl    %edx, InternalDTAs+12(%eax)
                    544:        addl    $272, %eax
                    545:        decl    %ebx
                    546:        jns     .L122
                    547:        xorl    %eax, %eax
                    548:        movl    %eax, pDTA
                    549:        xorl    %eax, %eax
                    550:        movl    %eax, DTAIndex
                    551:        addl    $16, %esp
                    552:        popl    %ebx
                    553:        popl    %esi
                    554:        popl    %ebp
                    555:        ret
                    556: .L127:
                    557:        movl    FileHandles+4(%esi), %eax
                    558:        movl    %eax, (%esp)
                    559:        call    fclose
                    560:        jmp     .L116
                    561:        .size   GemDOS_Reset, .-GemDOS_Reset
                    562:        .p2align 4,,15
                    563: .globl GemDOS_InitDrives
                    564:        .type   GemDOS_InitDrives, @function
                    565: GemDOS_InitDrives:
                    566:        pushl   %ebp
                    567:        movl    $12078, %eax
                    568:        movl    %esp, %ebp
                    569:        subl    $8, %esp
                    570:        movl    $emudrive, (%esp)
                    571:        movw    %ax, emudrive
                    572:        movb    $0, emudrive+2
                    573:        call    File_CleanFileName
                    574:        movl    $2, %eax
                    575:        movl    %eax, emudrive+512
                    576:        movl    %ebp, %esp
                    577:        popl    %ebp
                    578:        ret
                    579:        .size   GemDOS_InitDrives, .-GemDOS_InitDrives
                    580:        .p2align 4,,15
                    581: .globl GemDOS_UnInitDrives
                    582:        .type   GemDOS_UnInitDrives, @function
                    583: GemDOS_UnInitDrives:
                    584:        pushl   %ebp
                    585:        movl    %esp, %ebp
                    586:        popl    %ebp
                    587:        jmp     GemDOS_Reset
                    588:        .size   GemDOS_UnInitDrives, .-GemDOS_UnInitDrives
                    589:        .p2align 4,,15
                    590: .globl GemDOS_FindFreeFileHandle
                    591:        .type   GemDOS_FindFreeFileHandle, @function
                    592: GemDOS_FindFreeFileHandle:
                    593:        pushl   %ebp
                    594:        xorl    %eax, %eax
                    595:        movl    %esp, %ebp
                    596:        movl    $FileHandles, %edx
                    597:        .p2align 4,,15
                    598: .L136:
                    599:        movl    (%edx), %ecx
                    600:        testl   %ecx, %ecx
                    601:        je      .L130
                    602:        incl    %eax
                    603:        addl    $264, %edx
                    604:        cmpl    $31, %eax
                    605:        jle     .L136
                    606:        movl    $-1, %eax
                    607: .L130:
                    608:        popl    %ebp
                    609:        ret
                    610:        .size   GemDOS_FindFreeFileHandle, .-GemDOS_FindFreeFileHandle
                    611:        .p2align 4,,15
                    612: .globl GemDOS_IsInvalidFileHandle
                    613:        .type   GemDOS_IsInvalidFileHandle, @function
                    614: GemDOS_IsInvalidFileHandle:
                    615:        pushl   %ebp
                    616:        xorl    %ecx, %ecx
                    617:        movl    %esp, %ebp
                    618:        movl    8(%ebp), %edx
                    619:        cmpl    $31, %edx
                    620:        ja      .L143
                    621:        movl    %edx, %eax
                    622:        sall    $5, %eax
                    623:        addl    %edx, %eax
                    624:        movl    FileHandles(,%eax,8), %eax
                    625:        testl   %eax, %eax
                    626:        jne     .L141
                    627: .L143:
                    628:        movl    $1, %ecx
                    629: .L141:
                    630:        popl    %ebp
                    631:        movl    %ecx, %eax
                    632:        ret
                    633:        .size   GemDOS_IsInvalidFileHandle, .-GemDOS_IsInvalidFileHandle
                    634:        .p2align 4,,15
                    635: .globl baselen
                    636:        .type   baselen, @function
                    637: baselen:
                    638:        pushl   %ebp
                    639:        movl    $46, %eax
                    640:        movl    %esp, %ebp
                    641:        subl    $24, %esp
                    642:        movl    %ebx, -4(%ebp)
                    643:        movl    8(%ebp), %ebx
                    644:        movl    %eax, 4(%esp)
                    645:        movl    %ebx, (%esp)
                    646:        call    strchr
                    647:        testl   %eax, %eax
                    648:        je      .L147
                    649:        subl    %ebx, %eax
                    650:        movl    -4(%ebp), %ebx
                    651:        movl    %ebp, %esp
                    652:        popl    %ebp
                    653:        ret
                    654:        .p2align 4,,7
                    655: .L147:
                    656:        movl    -4(%ebp), %ebx
                    657:        movl    %ebp, %esp
                    658:        popl    %ebp
                    659:        jmp     strlen
                    660:        .size   baselen, .-baselen
                    661:        .section        .rodata.str1.1
                    662: .LC2:
                    663:        .string "%s%s"
                    664: .LC3:
                    665:        .string "%s%c%s"
                    666: .LC4:
                    667:        .string "no path for %s\n"
                    668:        .text
                    669:        .p2align 4,,15
                    670: .globl GemDOS_CreateHardDriveFileName
                    671:        .type   GemDOS_CreateHardDriveFileName, @function
                    672: GemDOS_CreateHardDriveFileName:
                    673:        pushl   %ebp
                    674:        movl    %esp, %ebp
                    675:        pushl   %edi
                    676:        pushl   %esi
                    677:        pushl   %ebx
                    678:        subl    $444, %esp
                    679:        movl    12(%ebp), %edx
                    680:        movzbl  (%edx), %eax
                    681:        testb   %al, %al
                    682:        je      .L148
                    683:        movl    16(%ebp), %ecx
                    684:        xorl    %edi, %edi
                    685:        movl    %edi, -384(%ebp)
                    686:        movl    %ecx, -380(%ebp)
                    687:        cmpb    $58, 1(%edx)
                    688:        je      .L200
                    689:        cmpb    $92, %al
                    690:        je      .L201
                    691:        movl    %edx, 12(%esp)
                    692:        movl    16(%ebp), %ecx
                    693:        movl    $emudrive+256, %eax
                    694:        movl    %eax, 8(%esp)
                    695:        movl    $.LC2, %eax
                    696:        movl    %ecx, (%esp)
                    697:        movl    %eax, 4(%esp)
                    698:        call    sprintf
                    699:        movl    $emudrive+256, %ecx
                    700:        .p2align 4,,15
                    701: .L154:
                    702:        movl    (%ecx), %eax
                    703:        addl    $4, %ecx
                    704:        leal    -16843009(%eax), %edx
                    705:        notl    %eax
                    706:        andl    %eax, %edx
                    707:        andl    $-2139062144, %edx
                    708:        je      .L154
                    709:        testl   $32896, %edx
                    710:        jne     .L156
                    711:        shrl    $16, %edx
                    712:        addl    $2, %ecx
                    713: .L156:
                    714:        addb    %dl, %dl
                    715:        movl    16(%ebp), %eax
                    716:        sbbl    $3, %ecx
                    717:        subl    $emudrive+256, %ecx
                    718:        leal    -1(%ecx,%eax), %ecx
                    719:        movl    %ecx, -384(%ebp)
                    720:        .p2align 4,,15
                    721: .L196:
                    722:        movl    -380(%ebp), %eax
                    723:        movl    $92, %esi
                    724:        movl    %esi, 4(%esp)
                    725:        incl    %eax
                    726:        movl    %eax, (%esp)
                    727:        call    strchr
                    728:        movl    %eax, -388(%ebp)
                    729:        testl   %eax, %eax
                    730:        movl    %eax, -380(%ebp)
                    731:        je      .L202
                    732:        movl    -384(%ebp), %eax
                    733:        testl   %eax, %eax
                    734:        je      .L169
                    735:        movl    -384(%ebp), %ecx
                    736:        xorl    %ebx, %ebx
                    737:        movb    $47, (%ecx)
                    738:        incl    %ecx
                    739:        movl    %ecx, -384(%ebp)
                    740:        movzbl  (%ecx), %eax
                    741:        movb    %al, -389(%ebp)
                    742:        xorl    %eax, %eax
                    743:        movb    $42, (%ecx)
                    744:        incl    %ecx
                    745:        movl    %ecx, -384(%ebp)
                    746:        movzbl  (%ecx), %edx
                    747:        movb    %dl, -390(%ebp)
                    748:        movb    $0, (%ecx)
                    749:        leal    -72(%ebp), %ecx
                    750:        movl    %eax, 8(%esp)
                    751:        movl    $8192, %eax
                    752:        movl    %eax, 4(%esp)
                    753:        movl    16(%ebp), %eax
                    754:        movl    %ecx, 12(%esp)
                    755:        movl    %eax, (%esp)
                    756:        call    glob
                    757:        movzbl  -390(%ebp), %edx
                    758:        movl    -384(%ebp), %ecx
                    759:        movb    %dl, (%ecx)
                    760:        decl    %ecx
                    761:        movzbl  -389(%ebp), %eax
                    762:        movl    %ecx, -384(%ebp)
                    763:        movb    %al, (%ecx)
                    764:        movl    -388(%ebp), %edx
                    765:        movb    $0, (%edx)
                    766:        movl    16(%ebp), %ecx
                    767:        movl    %ecx, (%esp)
                    768:        call    strlen
                    769:        movl    %eax, -404(%ebp)
                    770:        movl    -384(%ebp), %eax
                    771:        movl    %eax, (%esp)
                    772:        call    baselen
                    773:        movl    %eax, -400(%ebp)
                    774:        movl    -72(%ebp), %edi
                    775:        xorl    %eax, %eax
                    776:        movl    %eax, -396(%ebp)
                    777:        cmpl    %edi, %ebx
                    778:        jae     .L191
                    779:        .p2align 4,,15
                    780: .L168:
                    781:        cmpl    $7, -400(%ebp)
                    782:        jg      .L166
                    783:        movl    16(%ebp), %edx
                    784:        movl    -68(%ebp), %esi
                    785:        movl    %edx, 4(%esp)
                    786:        movl    (%esi,%ebx,4), %eax
                    787:        movl    %eax, (%esp)
                    788:        call    strcasecmp
                    789: .L197:
                    790:        testl   %eax, %eax
                    791:        jne     .L163
                    792:        movl    -388(%ebp), %eax
                    793:        movl    $47, %edi
                    794:        leal    -328(%ebp), %edx
                    795:        movl    %edi, 12(%esp)
                    796:        incl    %eax
                    797:        movl    %eax, 16(%esp)
                    798:        movl    (%esi,%ebx,4), %eax
                    799:        movl    $.LC3, %ebx
                    800:        movl    %ebx, 4(%esp)
                    801:        movl    %edx, (%esp)
                    802:        movl    %eax, 8(%esp)
                    803:        call    sprintf
                    804:        movl    16(%ebp), %eax
                    805:        leal    -328(%ebp), %ecx
                    806:        movl    %ecx, 4(%esp)
                    807:        movl    %eax, (%esp)
                    808:        call    strcpy
                    809:        movl    -72(%ebp), %ebx
                    810:        movl    $1, %ecx
                    811:        movl    %ecx, -396(%ebp)
                    812:        movl    %ebx, %edi
                    813: .L163:
                    814:        incl    %ebx
                    815:        cmpl    %edi, %ebx
                    816:        jb      .L168
                    817: .L191:
                    818:        leal    -72(%ebp), %edx
                    819:        movl    %edx, (%esp)
                    820:        call    globfree
                    821:        movl    -396(%ebp), %edx
                    822:        testl   %edx, %edx
                    823:        je      .L203
                    824: .L169:
                    825:        movl    -388(%ebp), %edx
                    826:        movl    %edx, -384(%ebp)
                    827:        jmp     .L196
                    828: .L203:
                    829:        movl    -384(%ebp), %ecx
                    830:        leal    -72(%ebp), %eax
                    831:        xorl    %ebx, %ebx
                    832:        movb    $42, (%ecx)
                    833:        incl    %ecx
                    834:        movl    %ecx, -384(%ebp)
                    835:        movb    $0, (%ecx)
                    836:        movl    16(%ebp), %edx
                    837:        movl    %eax, 12(%esp)
                    838:        xorl    %eax, %eax
                    839:        movl    %eax, 8(%esp)
                    840:        xorl    %eax, %eax
                    841:        movl    %edx, (%esp)
                    842:        movl    %eax, 4(%esp)
                    843:        call    glob
                    844:        movzbl  -390(%ebp), %ecx
                    845:        movl    -384(%ebp), %eax
                    846:        movb    %cl, (%eax)
                    847:        movzbl  -389(%ebp), %edx
                    848:        movb    %dl, -1(%eax)
                    849:        movl    -72(%ebp), %edi
                    850:        cmpl    %edi, -396(%ebp)
                    851:        jae     .L193
                    852:        .p2align 4,,15
                    853: .L175:
                    854:        movl    -404(%ebp), %ecx
                    855:        movl    16(%ebp), %eax
                    856:        movl    -68(%ebp), %esi
                    857:        movl    %ecx, 8(%esp)
                    858:        movl    %eax, 4(%esp)
                    859:        movl    (%esi,%ebx,4), %eax
                    860:        movl    %eax, (%esp)
                    861:        call    strncasecmp
                    862:        testl   %eax, %eax
                    863:        je      .L204
                    864: .L172:
                    865:        incl    %ebx
                    866:        cmpl    %edi, %ebx
                    867:        jb      .L175
                    868: .L193:
                    869:        leal    -72(%ebp), %edx
                    870:        movl    %edx, (%esp)
                    871:        call    globfree
                    872:        movl    -396(%ebp), %eax
                    873:        testl   %eax, %eax
                    874:        jne     .L169
                    875:        movl    -388(%ebp), %ecx
                    876:        movl    $.LC4, %edi
                    877:        movb    $47, (%ecx)
                    878:        movl    16(%ebp), %eax
                    879:        movl    %edi, 4(%esp)
                    880:        movl    %eax, 8(%esp)
                    881:        movl    stderr, %eax
                    882:        movl    %eax, (%esp)
                    883:        call    fprintf
                    884:        jmp     .L169
                    885: .L204:
                    886:        movl    -388(%ebp), %eax
                    887:        leal    -328(%ebp), %edx
                    888:        incl    %eax
                    889:        movl    %eax, 16(%esp)
                    890:        movl    $47, %eax
                    891:        movl    %eax, 12(%esp)
                    892:        movl    (%esi,%ebx,4), %eax
                    893:        movl    %edx, (%esp)
                    894:        movl    %eax, 8(%esp)
                    895:        movl    $.LC3, %eax
                    896:        movl    %eax, 4(%esp)
                    897:        call    sprintf
                    898:        movl    16(%ebp), %eax
                    899:        leal    -328(%ebp), %ecx
                    900:        movl    %ecx, 4(%esp)
                    901:        movl    %eax, (%esp)
                    902:        call    strcpy
                    903:        movl    -72(%ebp), %ebx
                    904:        movl    $1, %eax
                    905:        movl    %eax, -396(%ebp)
                    906:        movl    %ebx, %edi
                    907:        jmp     .L172
                    908:        .p2align 4,,7
                    909: .L166:
                    910:        movl    16(%ebp), %eax
                    911:        movl    -404(%ebp), %ecx
                    912:        movl    -68(%ebp), %esi
                    913:        movl    %eax, 4(%esp)
                    914:        movl    %ecx, 8(%esp)
                    915:        movl    (%esi,%ebx,4), %eax
                    916:        movl    %eax, (%esp)
                    917:        call    strncasecmp
                    918:        jmp     .L197
                    919: .L202:
                    920:        movl    -384(%ebp), %ebx
                    921:        testl   %ebx, %ebx
                    922:        je      .L205
                    923: .L189:
                    924:        movl    -384(%ebp), %eax
                    925:        movb    $47, (%eax)
                    926:        incl    %eax
                    927:        movl    %eax, -384(%ebp)
                    928:        movzbl  (%eax), %edx
                    929:        testb   %dl, %dl
                    930:        movb    %dl, -405(%ebp)
                    931:        je      .L148
                    932:        movl    %eax, (%esp)
                    933:        movl    $63, %edx
                    934:        movl    %edx, 4(%esp)
                    935:        call    strchr
                    936:        testl   %eax, %eax
                    937:        je      .L206
                    938: .L148:
                    939:        addl    $444, %esp
                    940:        popl    %ebx
                    941:        popl    %esi
                    942:        popl    %edi
                    943:        popl    %ebp
                    944:        ret
                    945: .L206:
                    946:        movl    -384(%ebp), %ecx
                    947:        movl    $42, %eax
                    948:        movl    %eax, 4(%esp)
                    949:        movl    %ecx, (%esp)
                    950:        call    strchr
                    951:        testl   %eax, %eax
                    952:        jne     .L148
                    953:        movl    -384(%ebp), %eax
                    954:        leal    -376(%ebp), %edx
                    955:        xorl    %esi, %esi
                    956:        movb    $42, (%eax)
                    957:        incl    %eax
                    958:        movl    %eax, -384(%ebp)
                    959:        movzbl  (%eax), %ebx
                    960:        movb    $0, (%eax)
                    961:        movl    16(%ebp), %ecx
                    962:        xorl    %eax, %eax
                    963:        movl    %eax, 8(%esp)
                    964:        xorl    %eax, %eax
                    965:        movl    %edx, 12(%esp)
                    966:        movl    %ecx, (%esp)
                    967:        movl    %eax, 4(%esp)
                    968:        call    glob
                    969:        movl    -384(%ebp), %eax
                    970:        movb    %bl, (%eax)
                    971:        decl    %eax
                    972:        movzbl  -405(%ebp), %edx
                    973:        movl    %eax, -384(%ebp)
                    974:        movb    %dl, (%eax)
                    975:        movl    16(%ebp), %ecx
                    976:        movl    %ecx, (%esp)
                    977:        call    strlen
                    978:        movl    %eax, -416(%ebp)
                    979:        movl    -384(%ebp), %eax
                    980:        movl    %eax, (%esp)
                    981:        call    baselen
                    982:        movl    %eax, -412(%ebp)
                    983:        movl    -376(%ebp), %edi
                    984:        cmpl    %edi, %esi
                    985:        jae     .L195
                    986: .L188:
                    987:        cmpl    $7, -412(%ebp)
                    988:        jg      .L186
                    989:        movl    16(%ebp), %edx
                    990:        movl    -372(%ebp), %ebx
                    991:        movl    %edx, 4(%esp)
                    992:        movl    (%ebx,%esi,4), %eax
                    993:        movl    %eax, (%esp)
                    994:        call    strcasecmp
                    995: .L199:
                    996:        testl   %eax, %eax
                    997:        jne     .L183
                    998:        movl    (%ebx,%esi,4), %eax
                    999:        movl    16(%ebp), %edx
                   1000:        movl    %eax, 4(%esp)
                   1001:        movl    %edx, (%esp)
                   1002:        call    strcpy
                   1003:        movl    -376(%ebp), %esi
                   1004:        movl    %esi, %edi
                   1005: .L183:
                   1006:        incl    %esi
                   1007:        cmpl    %edi, %esi
                   1008:        jb      .L188
                   1009: .L195:
                   1010:        leal    -376(%ebp), %ecx
                   1011:        movl    %ecx, (%esp)
                   1012:        call    globfree
                   1013:        jmp     .L148
                   1014: .L186:
                   1015:        movl    16(%ebp), %eax
                   1016:        movl    -416(%ebp), %ecx
                   1017:        movl    -372(%ebp), %ebx
                   1018:        movl    %eax, 4(%esp)
                   1019:        movl    %ecx, 8(%esp)
                   1020:        movl    (%ebx,%esi,4), %eax
                   1021:        movl    %eax, (%esp)
                   1022:        call    strncasecmp
                   1023:        jmp     .L199
                   1024: .L205:
                   1025:        movl    $47, %ecx
                   1026:        movl    %ecx, 4(%esp)
                   1027:        movl    16(%ebp), %ecx
                   1028:        movl    %ecx, (%esp)
                   1029:        call    strrchr
                   1030:        movl    %eax, -384(%ebp)
                   1031:        testl   %eax, %eax
                   1032:        jne     .L189
                   1033:        jmp     .L148
                   1034: .L201:
                   1035:        movl    %edx, 12(%esp)
                   1036:        movl    $emudrive, %ecx
                   1037:        movl    $.LC2, %edx
                   1038:        movl    %edx, 4(%esp)
                   1039:        movl    16(%ebp), %edx
                   1040:        movl    %ecx, 8(%esp)
                   1041:        movl    %edx, (%esp)
                   1042: .L198:
                   1043:        call    sprintf
                   1044:        jmp     .L196
                   1045: .L200:
                   1046:        movl    %edx, (%esp)
                   1047:        movl    $emudrive, %esi
                   1048:        movl    $.LC2, %ebx
                   1049:        call    File_RemoveFileNameDrive
                   1050:        movl    %eax, 12(%esp)
                   1051:        movl    16(%ebp), %eax
                   1052:        movl    %esi, 8(%esp)
                   1053:        movl    %ebx, 4(%esp)
                   1054:        movl    %eax, (%esp)
                   1055:        jmp     .L198
                   1056:        .size   GemDOS_CreateHardDriveFileName, .-GemDOS_CreateHardDriveFileName
                   1057:        .p2align 4,,15
                   1058: .globl GemDOS_ConvertAttribute
                   1059:        .type   GemDOS_ConvertAttribute, @function
                   1060: GemDOS_ConvertAttribute:
                   1061:        pushl   %ebp
                   1062:        xorl    %edx, %edx
                   1063:        movl    %esp, %ebp
                   1064:        movl    8(%ebp), %eax
                   1065:        andl    $61440, %eax
                   1066:        cmpl    $16384, %eax
                   1067:        je      .L209
                   1068: .L208:
                   1069:        popl    %ebp
                   1070:        movzbl  %dl, %eax
                   1071:        ret
                   1072:        .p2align 4,,7
                   1073: .L209:
                   1074:        movb    $16, %dl
                   1075:        jmp     .L208
                   1076:        .size   GemDOS_ConvertAttribute, .-GemDOS_ConvertAttribute
                   1077:        .p2align 4,,15
                   1078: .globl GemDOS_SetDTA
                   1079:        .type   GemDOS_SetDTA, @function
                   1080: GemDOS_SetDTA:
                   1081:        pushl   %ebp
                   1082:        movl    %esp, %ebp
                   1083:        subl    $8, %esp
                   1084:        movl    $15, (%esp)
                   1085:        call    GetReg
                   1086:        movl    %eax, (%esp)
                   1087:        call    MemReadLong
                   1088:        movl    STRam, %edx
                   1089:        andl    $16777215, %eax
                   1090:        addl    %edx, %eax
                   1091:        movl    %eax, pDTA
                   1092:        movl    %ebp, %esp
                   1093:        popl    %ebp
                   1094:        ret
                   1095:        .size   GemDOS_SetDTA, .-GemDOS_SetDTA
                   1096:        .section        .rodata.str1.1
                   1097: .LC5:
                   1098:        .string "w+"
                   1099: .LC6:
                   1100:        .string "wb"
                   1101:        .text
                   1102:        .p2align 4,,15
                   1103: .globl GemDOS_Create
                   1104:        .type   GemDOS_Create, @function
                   1105: GemDOS_Create:
                   1106:        pushl   %ebp
                   1107:        movl    $.LC5, %eax
                   1108:        movl    %esp, %ebp
                   1109:        pushl   %edi
                   1110:        pushl   %esi
                   1111:        pushl   %ebx
                   1112:        subl    $300, %esp
                   1113:        movl    %eax, -288(%ebp)
                   1114:        movl    $.LC6, %eax
                   1115:        movl    %eax, -284(%ebp)
                   1116:        movl    $15, (%esp)
                   1117:        call    GetReg
                   1118:        movl    %eax, %esi
                   1119:        subl    $2, %esi
                   1120:        leal    2(%esi), %eax
                   1121:        movl    %eax, (%esp)
                   1122:        call    MemReadLong
                   1123:        movl    %eax, %ebx
                   1124:        movl    STRam, %eax
                   1125:        andl    $16777215, %ebx
                   1126:        addl    %eax, %ebx
                   1127:        leal    6(%esi), %eax
                   1128:        movl    %eax, (%esp)
                   1129:        call    MemReadWord
                   1130:        movl    %ebx, 4(%esp)
                   1131:        movswl  %ax,%esi
                   1132:        leal    -280(%ebp), %eax
                   1133:        movl    %eax, 8(%esp)
                   1134:        movl    $2, (%esp)
                   1135:        call    GemDOS_CreateHardDriveFileName
                   1136:        call    GemDOS_FindFreeFileHandle
                   1137:        cmpl    $-1, %eax
                   1138:        movl    %eax, %ebx
                   1139:        je      .L217
                   1140:        sall    $5, %eax
                   1141:        andl    $1, %esi
                   1142:        addl    %ebx, %eax
                   1143:        leal    0(,%eax,8), %edi
                   1144:        leal    -288(%ebp), %eax
                   1145:        movl    (%eax,%esi,4), %eax
                   1146:        movl    %eax, 4(%esp)
                   1147:        leal    -280(%ebp), %eax
                   1148:        movl    %eax, (%esp)
                   1149:        call    fopen
                   1150:        movl    %eax, FileHandles+4(%edi)
                   1151:        testl   %eax, %eax
                   1152:        je      .L214
                   1153:        movl    $1, %esi
                   1154:        leal    64(%ebx), %eax
                   1155:        movl    %esi, FileHandles(%edi)
                   1156:        movl    %eax, 4(%esp)
                   1157: .L216:
                   1158:        movl    $0, (%esp)
                   1159:        call    SetReg
                   1160:        addl    $300, %esp
                   1161:        popl    %ebx
                   1162:        popl    %esi
                   1163:        popl    %edi
                   1164:        popl    %ebp
                   1165:        ret
                   1166:        .p2align 4,,7
                   1167: .L214:
                   1168:        movl    $-33, %ecx
                   1169:        movl    %ecx, 4(%esp)
                   1170:        jmp     .L216
                   1171:        .p2align 4,,7
                   1172: .L217:
                   1173:        movl    $-35, %edi
                   1174:        movl    %edi, 4(%esp)
                   1175:        jmp     .L216
                   1176:        .size   GemDOS_Create, .-GemDOS_Create
                   1177:        .section        .rodata.str1.1
                   1178: .LC7:
                   1179:        .string "rb"
                   1180: .LC8:
                   1181:        .string "r+"
                   1182: .LC9:
                   1183:        .string "%s"
                   1184:        .text
                   1185:        .p2align 4,,15
                   1186: .globl GemDOS_Open
                   1187:        .type   GemDOS_Open, @function
                   1188: GemDOS_Open:
                   1189:        pushl   %ebp
                   1190:        movl    $.LC7, %eax
                   1191:        movl    %esp, %ebp
                   1192:        pushl   %edi
                   1193:        pushl   %esi
                   1194:        pushl   %ebx
                   1195:        subl    $300, %esp
                   1196:        movl    %eax, -296(%ebp)
                   1197:        movl    $.LC6, %eax
                   1198:        movl    %eax, -292(%ebp)
                   1199:        movl    $.LC8, %eax
                   1200:        movl    %eax, -288(%ebp)
                   1201:        movl    $15, (%esp)
                   1202:        call    GetReg
                   1203:        movl    %eax, %esi
                   1204:        subl    $2, %esi
                   1205:        leal    2(%esi), %eax
                   1206:        movl    %eax, (%esp)
                   1207:        call    MemReadLong
                   1208:        movl    STRam, %edi
                   1209:        movl    %eax, %ebx
                   1210:        leal    6(%esi), %eax
                   1211:        movl    %eax, (%esp)
                   1212:        andl    $16777215, %ebx
                   1213:        addl    %edi, %ebx
                   1214:        call    MemReadWord
                   1215:        movl    %ebx, 4(%esp)
                   1216:        movswl  %ax,%edi
                   1217:        leal    -280(%ebp), %eax
                   1218:        movl    %eax, 8(%esp)
                   1219:        movl    $2, (%esp)
                   1220:        call    GemDOS_CreateHardDriveFileName
                   1221:        call    GemDOS_FindFreeFileHandle
                   1222:        cmpl    $-1, %eax
                   1223:        movl    %eax, %esi
                   1224:        je      .L223
                   1225:        sall    $5, %eax
                   1226:        andl    $3, %edi
                   1227:        addl    %esi, %eax
                   1228:        leal    0(,%eax,8), %ebx
                   1229:        movl    -296(%ebp,%edi,4), %eax
                   1230:        movl    %eax, 4(%esp)
                   1231:        leal    -280(%ebp), %eax
                   1232:        movl    %eax, (%esp)
                   1233:        call    fopen
                   1234:        movl    %eax, FileHandles+4(%ebx)
                   1235:        movl    $.LC9, %edx
                   1236:        leal    -280(%ebp), %eax
                   1237:        movl    %eax, 8(%esp)
                   1238:        leal    FileHandles+8(%ebx), %eax
                   1239:        movl    %edx, 4(%esp)
                   1240:        movl    %eax, (%esp)
                   1241:        call    sprintf
                   1242:        movl    FileHandles+4(%ebx), %eax
                   1243:        testl   %eax, %eax
                   1244:        je      .L220
                   1245:        movl    $1, %eax
                   1246:        movl    %eax, FileHandles(%ebx)
                   1247:        leal    64(%esi), %eax
                   1248: .L222:
                   1249:        movl    %eax, 4(%esp)
                   1250: .L221:
                   1251:        movl    $0, (%esp)
                   1252:        call    SetReg
                   1253:        addl    $300, %esp
                   1254:        popl    %ebx
                   1255:        popl    %esi
                   1256:        popl    %edi
                   1257:        popl    %ebp
                   1258:        ret
                   1259:        .p2align 4,,7
                   1260: .L220:
                   1261:        movl    $-33, %eax
                   1262:        jmp     .L222
                   1263:        .p2align 4,,7
                   1264: .L223:
                   1265:        movl    $-35, %ecx
                   1266:        movl    %ecx, 4(%esp)
                   1267:        jmp     .L221
                   1268:        .size   GemDOS_Open, .-GemDOS_Open
                   1269:        .p2align 4,,15
                   1270: .globl GemDOS_Close
                   1271:        .type   GemDOS_Close, @function
                   1272: GemDOS_Close:
                   1273:        pushl   %ebp
                   1274:        movl    %esp, %ebp
                   1275:        subl    $24, %esp
                   1276:        movl    $15, (%esp)
                   1277:        movl    %esi, -4(%ebp)
                   1278:        movl    %ebx, -8(%ebp)
                   1279:        call    GetReg
                   1280:        movl    %eax, (%esp)
                   1281:        call    MemReadWord
                   1282:        cwtl
                   1283:        leal    -64(%eax), %esi
                   1284:        movl    %esi, (%esp)
                   1285:        call    GemDOS_IsInvalidFileHandle
                   1286:        testl   %eax, %eax
                   1287:        je      .L227
                   1288: .L224:
                   1289:        movl    -8(%ebp), %ebx
                   1290:        movl    -4(%ebp), %esi
                   1291:        movl    %ebp, %esp
                   1292:        popl    %ebp
                   1293:        ret
                   1294:        .p2align 4,,7
                   1295: .L227:
                   1296:        movl    %esi, %ebx
                   1297:        sall    $5, %ebx
                   1298:        addl    %esi, %ebx
                   1299:        sall    $3, %ebx
                   1300:        movl    FileHandles+4(%ebx), %eax
                   1301:        movl    %eax, (%esp)
                   1302:        call    fclose
                   1303:        movl    $0, (%esp)
                   1304:        xorl    %eax, %eax
                   1305:        movl    %eax, FileHandles(%ebx)
                   1306:        xorl    %eax, %eax
                   1307:        movl    %eax, 4(%esp)
                   1308:        call    SetReg
                   1309:        jmp     .L224
                   1310:        .size   GemDOS_Close, .-GemDOS_Close
                   1311:        .p2align 4,,15
                   1312: .globl GemDOS_Read
                   1313:        .type   GemDOS_Read, @function
                   1314: GemDOS_Read:
                   1315:        pushl   %ebp
                   1316:        movl    %esp, %ebp
                   1317:        pushl   %edi
                   1318:        pushl   %esi
                   1319:        pushl   %ebx
                   1320:        subl    $28, %esp
                   1321:        movl    $15, (%esp)
                   1322:        call    GetReg
                   1323:        movl    %eax, %ebx
                   1324:        subl    $2, %ebx
                   1325:        leal    2(%ebx), %eax
                   1326:        movl    %eax, (%esp)
                   1327:        call    MemReadWord
                   1328:        cwtl
                   1329:        leal    -64(%eax), %esi
                   1330:        leal    4(%ebx), %eax
                   1331:        movl    %eax, (%esp)
                   1332:        call    MemReadLong
                   1333:        movl    %eax, -16(%ebp)
                   1334:        leal    8(%ebx), %eax
                   1335:        movl    %eax, (%esp)
                   1336:        call    MemReadLong
                   1337:        movl    %esi, (%esp)
                   1338:        movl    %eax, %edi
                   1339:        movl    STRam, %eax
                   1340:        andl    $16777215, %edi
                   1341:        addl    %eax, %edi
                   1342:        call    GemDOS_IsInvalidFileHandle
                   1343:        testl   %eax, %eax
                   1344:        je      .L235
                   1345: .L228:
                   1346:        addl    $28, %esp
                   1347:        popl    %ebx
                   1348:        popl    %esi
                   1349:        popl    %edi
                   1350:        popl    %ebp
                   1351:        ret
                   1352:        .p2align 4,,7
                   1353: .L235:
                   1354:        movl    %esi, %eax
                   1355:        sall    $5, %eax
                   1356:        addl    %esi, %eax
                   1357:        sall    $3, %eax
                   1358:        xorl    %esi, %esi
                   1359:        movl    %eax, -20(%ebp)
                   1360:        movl    FileHandles+4(%eax), %eax
                   1361:        movl    %eax, (%esp)
                   1362:        call    ftell
                   1363:        movl    %esi, 4(%esp)
                   1364:        movl    -20(%ebp), %edx
                   1365:        movl    %eax, %ebx
                   1366:        movl    $2, %eax
                   1367:        movl    %eax, 8(%esp)
                   1368:        movl    FileHandles+4(%edx), %eax
                   1369:        movl    %eax, (%esp)
                   1370:        call    fseek
                   1371:        movl    -20(%ebp), %edx
                   1372:        movl    FileHandles+4(%edx), %eax
                   1373:        movl    %eax, (%esp)
                   1374:        call    ftell
                   1375:        movl    %ebx, 4(%esp)
                   1376:        movl    -20(%ebp), %edx
                   1377:        movl    %eax, %esi
                   1378:        xorl    %ecx, %ecx
                   1379:        movl    %ecx, 8(%esp)
                   1380:        movl    FileHandles+4(%edx), %eax
                   1381:        movl    %eax, (%esp)
                   1382:        call    fseek
                   1383:        cmpl    %ebx, %esi
                   1384:        je      .L236
                   1385:        cmpl    %esi, -16(%ebp)
                   1386:        jbe     .L233
                   1387:        movl    %esi, -16(%ebp)
                   1388: .L233:
                   1389:        movl    %edi, (%esp)
                   1390:        movl    -20(%ebp), %edx
                   1391:        movl    FileHandles+4(%edx), %eax
                   1392:        movl    %eax, 12(%esp)
                   1393:        movl    -16(%ebp), %eax
                   1394:        movl    %eax, 8(%esp)
                   1395:        movl    $1, %eax
                   1396:        movl    %eax, 4(%esp)
                   1397:        call    fread
                   1398:        movl    %eax, 4(%esp)
                   1399: .L234:
                   1400:        movl    $0, (%esp)
                   1401:        call    SetReg
                   1402:        jmp     .L228
                   1403: .L236:
                   1404:        xorl    %edx, %edx
                   1405:        movl    %edx, 4(%esp)
                   1406:        jmp     .L234
                   1407:        .size   GemDOS_Read, .-GemDOS_Read
                   1408:        .p2align 4,,15
                   1409: .globl GemDOS_Write
                   1410:        .type   GemDOS_Write, @function
                   1411: GemDOS_Write:
                   1412:        pushl   %ebp
                   1413:        movl    %esp, %ebp
                   1414:        subl    $40, %esp
                   1415:        movl    $15, (%esp)
                   1416:        movl    %ebx, -12(%ebp)
                   1417:        movl    %esi, -8(%ebp)
                   1418:        movl    %edi, -4(%ebp)
                   1419:        call    GetReg
                   1420:        movl    %eax, %ebx
                   1421:        subl    $2, %ebx
                   1422:        leal    2(%ebx), %eax
                   1423:        movl    %eax, (%esp)
                   1424:        call    MemReadWord
                   1425:        cwtl
                   1426:        leal    -64(%eax), %esi
                   1427:        leal    4(%ebx), %eax
                   1428:        movl    %eax, (%esp)
                   1429:        call    MemReadLong
                   1430:        movl    %eax, %edi
                   1431:        leal    8(%ebx), %eax
                   1432:        movl    %eax, (%esp)
                   1433:        call    MemReadLong
                   1434:        movl    %esi, (%esp)
                   1435:        movl    %eax, %ebx
                   1436:        movl    STRam, %eax
                   1437:        andl    $16777215, %ebx
                   1438:        addl    %eax, %ebx
                   1439:        call    GemDOS_IsInvalidFileHandle
                   1440:        testl   %eax, %eax
                   1441:        je      .L242
                   1442: .L237:
                   1443:        movl    -12(%ebp), %ebx
                   1444:        movl    -8(%ebp), %esi
                   1445:        movl    -4(%ebp), %edi
                   1446:        movl    %ebp, %esp
                   1447:        popl    %ebp
                   1448:        ret
                   1449:        .p2align 4,,7
                   1450: .L242:
                   1451:        movl    %edi, 8(%esp)
                   1452:        movl    %esi, %eax
                   1453:        sall    $5, %eax
                   1454:        movl    %ebx, (%esp)
                   1455:        addl    %esi, %eax
                   1456:        movl    FileHandles+4(,%eax,8), %eax
                   1457:        movl    %eax, 12(%esp)
                   1458:        movl    $1, %eax
                   1459:        movl    %eax, 4(%esp)
                   1460:        call    fwrite
                   1461:        movl    %eax, 4(%esp)
                   1462:        movl    $0, (%esp)
                   1463:        call    SetReg
                   1464:        jmp     .L237
                   1465:        .size   GemDOS_Write, .-GemDOS_Write
                   1466:        .p2align 4,,15
                   1467: .globl GemDOS_UnLink
                   1468:        .type   GemDOS_UnLink, @function
                   1469: GemDOS_UnLink:
                   1470:        pushl   %ebp
                   1471:        movl    %esp, %ebp
                   1472:        subl    $280, %esp
                   1473:        movl    $15, (%esp)
                   1474:        movl    %ebx, -4(%ebp)
                   1475:        leal    -264(%ebp), %ebx
                   1476:        call    GetReg
                   1477:        movl    %eax, (%esp)
                   1478:        call    MemReadLong
                   1479:        movl    %ebx, 8(%esp)
                   1480:        movl    STRam, %edx
                   1481:        andl    $16777215, %eax
                   1482:        movl    $2, (%esp)
                   1483:        addl    %edx, %eax
                   1484:        movl    %eax, 4(%esp)
                   1485:        call    GemDOS_CreateHardDriveFileName
                   1486:        movl    %ebx, (%esp)
                   1487:        call    unlink
                   1488:        testl   %eax, %eax
                   1489:        jne     .L244
                   1490:        xorl    %eax, %eax
                   1491: .L247:
                   1492:        movl    %eax, 4(%esp)
                   1493:        movl    $0, (%esp)
                   1494:        call    SetReg
                   1495:        movl    -4(%ebp), %ebx
                   1496:        movl    %ebp, %esp
                   1497:        popl    %ebp
                   1498:        ret
                   1499:        .p2align 4,,7
                   1500: .L244:
                   1501:        movl    $-33, %eax
                   1502:        jmp     .L247
                   1503:        .size   GemDOS_UnLink, .-GemDOS_UnLink
                   1504:        .section        .rodata.str1.1
                   1505: .LC10:
                   1506:        .string "\tError setting DTA.\n"
                   1507:        .text
                   1508:        .p2align 4,,15
                   1509: .globl GemDOS_SNext
                   1510:        .type   GemDOS_SNext, @function
                   1511: GemDOS_SNext:
                   1512:        pushl   %ebp
                   1513:        movl    %esp, %ebp
                   1514:        subl    $24, %esp
                   1515:        movl    $15, (%esp)
                   1516:        call    GetReg
                   1517:        movl    pDTA, %edx
                   1518:        movl    2(%edx), %eax
                   1519: #APP
                   1520:        bswap   %eax
                   1521: 
                   1522: #NO_APP
                   1523:        cmpl    $311964790, %eax
                   1524:        je      .L255
                   1525: .L248:
                   1526:        movl    %ebp, %esp
                   1527:        popl    %ebp
                   1528:        ret
                   1529:        .p2align 4,,7
                   1530: .L255:
                   1531:        movzwl  (%edx), %eax
                   1532: #APP
                   1533:        xchgb %al,%ah
                   1534: #NO_APP
                   1535:        movzbl  %al, %eax
                   1536:        movl    %eax, %edx
                   1537:        sall    $4, %edx
                   1538:        addl    %eax, %edx
                   1539:        sall    $4, %edx
                   1540:        movl    InternalDTAs+8(%edx), %ecx
                   1541:        cmpl    InternalDTAs+4(%edx), %ecx
                   1542:        jl      .L252
                   1543:        movl    $-49, %eax
                   1544:        movl    %eax, 4(%esp)
                   1545: .L254:
                   1546:        movl    $0, (%esp)
                   1547:        call    SetReg
                   1548:        jmp     .L248
                   1549:        .p2align 4,,7
                   1550: .L252:
                   1551:        movl    InternalDTAs+12(%edx), %eax
                   1552:        movl    (%eax,%ecx,4), %eax
                   1553:        movl    %eax, 4(%esp)
                   1554:        leal    1(%ecx), %eax
                   1555:        movl    %eax, InternalDTAs+8(%edx)
                   1556:        leal    InternalDTAs+16(%edx), %eax
                   1557:        movl    %eax, (%esp)
                   1558:        call    PopulateDTA
                   1559:        testl   %eax, %eax
                   1560:        jne     .L253
                   1561:        movl    $.LC10, (%esp)
                   1562:        movl    stderr, %eax
                   1563:        movl    %eax, 12(%esp)
                   1564:        movl    $20, %eax
                   1565:        movl    %eax, 8(%esp)
                   1566:        movl    $1, %eax
                   1567:        movl    %eax, 4(%esp)
                   1568:        call    fwrite
                   1569:        jmp     .L248
                   1570: .L253:
                   1571:        xorl    %ecx, %ecx
                   1572:        movl    %ecx, 4(%esp)
                   1573:        jmp     .L254
                   1574:        .size   GemDOS_SNext, .-GemDOS_SNext
                   1575:        .p2align 4,,15
                   1576: .globl GemDOS_SFirst
                   1577:        .type   GemDOS_SFirst, @function
                   1578: GemDOS_SFirst:
                   1579:        pushl   %ebp
                   1580:        movl    %esp, %ebp
                   1581:        pushl   %edi
                   1582:        leal    -280(%ebp), %edi
                   1583:        pushl   %esi
                   1584:        pushl   %ebx
                   1585:        subl    $556, %esp
                   1586:        movl    $15, (%esp)
                   1587:        call    GetReg
                   1588:        movl    %eax, %esi
                   1589:        subl    $2, %esi
                   1590:        leal    2(%esi), %eax
                   1591:        movl    %eax, (%esp)
                   1592:        call    MemReadLong
                   1593:        movl    STRam, %ecx
                   1594:        movl    %eax, %ebx
                   1595:        andl    $16777215, %ebx
                   1596:        leal    6(%esi), %eax
                   1597:        addl    %ecx, %ebx
                   1598:        movl    %eax, (%esp)
                   1599:        call    MemReadWord
                   1600:        movl    %edi, 8(%esp)
                   1601:        movzwl  %ax, %esi
                   1602:        movl    %ebx, 4(%esp)
                   1603:        movl    $2, (%esp)
                   1604:        call    GemDOS_CreateHardDriveFileName
                   1605:        movzwl  DTAIndex, %eax
                   1606: #APP
                   1607:        xchgb %al,%ah
                   1608: #NO_APP
                   1609:        movl    pDTA, %edx
                   1610:        movw    %ax, (%edx)
                   1611:        movl    $311964790, %eax
                   1612: #APP
                   1613:        bswap   %eax
                   1614: 
                   1615: #NO_APP
                   1616:        movl    %eax, 2(%edx)
                   1617:        movl    DTAIndex, %ecx
                   1618:        movl    %ecx, %eax
                   1619:        sall    $4, %eax
                   1620:        addl    %ecx, %eax
                   1621:        sall    $4, %eax
                   1622:        cmpl    $1, InternalDTAs(%eax)
                   1623:        je      .L286
                   1624: .L259:
                   1625:        movl    %ecx, %eax
                   1626:        movl    $1, %edx
                   1627:        sall    $4, %eax
                   1628:        addl    %ecx, %eax
                   1629:        sall    $4, %eax
                   1630:        andl    $8, %esi
                   1631:        movl    %edx, InternalDTAs(%eax)
                   1632:        je      .L260
                   1633:        movl    pDTA, %eax
                   1634:        movl    $1280658757, 30(%eax)
                   1635:        movl    $1145394241, 34(%eax)
                   1636:        movl    $825241646, 38(%eax)
                   1637:        movb    $0, 42(%eax)
                   1638:        xorl    %eax, %eax
                   1639: .L285:
                   1640:        movl    %eax, 4(%esp)
                   1641:        movl    $0, (%esp)
                   1642:        call    SetReg
                   1643: .L256:
                   1644:        addl    $556, %esp
                   1645:        popl    %ebx
                   1646:        popl    %esi
                   1647:        popl    %edi
                   1648:        popl    %ebp
                   1649:        ret
                   1650:        .p2align 4,,7
                   1651: .L260:
                   1652:        movl    %edi, (%esp)
                   1653:        addl    $InternalDTAs+16, %eax
                   1654:        movl    %eax, 4(%esp)
                   1655:        call    fsfirst_dirname
                   1656:        movl    DTAIndex, %edx
                   1657:        movl    %edx, %eax
                   1658:        sall    $4, %eax
                   1659:        addl    %edx, %eax
                   1660:        sall    $4, %eax
                   1661:        addl    $InternalDTAs+16, %eax
                   1662:        movl    %eax, (%esp)
                   1663:        call    opendir
                   1664:        testl   %eax, %eax
                   1665:        je      .L287
                   1666:        movl    %eax, (%esp)
                   1667:        xorl    %esi, %esi
                   1668:        call    closedir
                   1669:        movl    %esi, 8(%esp)
                   1670:        movl    DTAIndex, %eax
                   1671:        movl    %eax, %ebx
                   1672:        sall    $4, %ebx
                   1673:        addl    %eax, %ebx
                   1674:        movl    $alphasort, %eax
                   1675:        movl    %eax, 12(%esp)
                   1676:        sall    $4, %ebx
                   1677:        leal    -540(%ebp), %eax
                   1678:        movl    %eax, 4(%esp)
                   1679:        leal    InternalDTAs+16(%ebx), %eax
                   1680:        movl    %eax, (%esp)
                   1681:        call    scandir
                   1682:        movl    %eax, InternalDTAs+4(%ebx)
                   1683:        movl    DTAIndex, %edx
                   1684:        movl    %edx, %eax
                   1685:        sall    $4, %eax
                   1686:        addl    %edx, %eax
                   1687:        sall    $4, %eax
                   1688:        movl    InternalDTAs+4(%eax), %ecx
                   1689:        testl   %ecx, %ecx
                   1690:        js      .L283
                   1691:        movl    %edi, (%esp)
                   1692:        xorl    %edx, %edx
                   1693:        xorl    %esi, %esi
                   1694:        movl    %edx, InternalDTAs+8(%eax)
                   1695:        xorl    %edi, %edi
                   1696:        leal    -536(%ebp), %eax
                   1697:        movl    %eax, 4(%esp)
                   1698:        call    fsfirst_dirmask
                   1699:        movl    DTAIndex, %ecx
                   1700:        movl    %ecx, %eax
                   1701:        sall    $4, %eax
                   1702:        addl    %ecx, %eax
                   1703:        sall    $4, %eax
                   1704:        cmpl    InternalDTAs+4(%eax), %edi
                   1705:        jge     .L256
                   1706:        .p2align 4,,15
                   1707: .L268:
                   1708:        movl    -540(%ebp), %eax
                   1709:        movl    (%eax,%esi,4), %eax
                   1710:        addl    $11, %eax
                   1711:        movl    %eax, 4(%esp)
                   1712:        leal    -536(%ebp), %eax
                   1713:        movl    %eax, (%esp)
                   1714:        call    match
                   1715:        testl   %eax, %eax
                   1716:        je      .L265
                   1717:        incl    %edi
                   1718: .L265:
                   1719:        movl    DTAIndex, %ecx
                   1720:        incl    %esi
                   1721:        movl    %ecx, %eax
                   1722:        sall    $4, %eax
                   1723:        leal    (%ecx,%eax), %ebx
                   1724:        sall    $4, %ebx
                   1725:        cmpl    InternalDTAs+4(%ebx), %esi
                   1726:        jl      .L268
                   1727:        testl   %edi, %edi
                   1728:        je      .L256
                   1729:        leal    0(,%edi,4), %eax
                   1730:        xorl    %esi, %esi
                   1731:        movl    %eax, (%esp)
                   1732:        call    malloc
                   1733:        movl    %eax, InternalDTAs+12(%ebx)
                   1734:        movl    DTAIndex, %ecx
                   1735:        xorl    %ebx, %ebx
                   1736:        movl    %ecx, %eax
                   1737:        sall    $4, %eax
                   1738:        addl    %ecx, %eax
                   1739:        sall    $4, %eax
                   1740:        cmpl    InternalDTAs+4(%eax), %esi
                   1741:        jl      .L275
                   1742: .L280:
                   1743:        movl    %ecx, %eax
                   1744:        sall    $4, %eax
                   1745:        addl    %ecx, %eax
                   1746:        sall    $4, %eax
                   1747:        testl   %edi, %edi
                   1748:        movl    %edi, InternalDTAs+4(%eax)
                   1749:        jne     .L276
                   1750: .L283:
                   1751:        movl    $-33, %eax
                   1752:        jmp     .L285
                   1753: .L276:
                   1754:        movl    $0, (%esp)
                   1755:        call    GemDOS_SNext
                   1756:        movl    DTAIndex, %ecx
                   1757:        incl    %ecx
                   1758:        movzbl  %cl,%eax
                   1759:        movl    %eax, DTAIndex
                   1760:        jmp     .L256
                   1761:        .p2align 4,,7
                   1762: .L275:
                   1763:        movl    -540(%ebp), %eax
                   1764:        movl    (%eax,%esi,4), %eax
                   1765:        addl    $11, %eax
                   1766:        movl    %eax, 4(%esp)
                   1767:        leal    -536(%ebp), %eax
                   1768:        movl    %eax, (%esp)
                   1769:        call    match
                   1770:        testl   %eax, %eax
                   1771:        je      .L281
                   1772:        movl    DTAIndex, %ecx
                   1773:        movl    %ecx, %eax
                   1774:        sall    $4, %eax
                   1775:        addl    %ecx, %eax
                   1776:        sall    $4, %eax
                   1777:        movl    InternalDTAs+12(%eax), %edx
                   1778:        movl    -540(%ebp), %eax
                   1779:        movl    (%eax,%esi,4), %eax
                   1780:        movl    %eax, (%edx,%ebx,4)
                   1781:        incl    %ebx
                   1782: .L272:
                   1783:        movl    %ecx, %eax
                   1784:        incl    %esi
                   1785:        sall    $4, %eax
                   1786:        addl    %ecx, %eax
                   1787:        sall    $4, %eax
                   1788:        cmpl    InternalDTAs+4(%eax), %esi
                   1789:        jl      .L275
                   1790:        jmp     .L280
                   1791: .L281:
                   1792:        movl    DTAIndex, %ecx
                   1793:        jmp     .L272
                   1794: .L287:
                   1795:        movl    $-34, %eax
                   1796:        jmp     .L285
                   1797:        .p2align 4,,7
                   1798: .L286:
                   1799:        call    ClearInternalDTA
                   1800:        movl    DTAIndex, %ecx
                   1801:        jmp     .L259
                   1802:        .size   GemDOS_SFirst, .-GemDOS_SFirst
                   1803:        .p2align 4,,15
                   1804: .globl Call_Memset
                   1805:        .type   Call_Memset, @function
                   1806: Call_Memset:
                   1807:        pushl   %ebp
                   1808:        movl    %esp, %ebp
                   1809:        subl    $24, %esp
                   1810:        movl    $15, (%esp)
                   1811:        movl    %ebx, -8(%ebp)
                   1812:        movl    %esi, -4(%ebp)
                   1813:        call    GetReg
                   1814:        movl    %eax, %esi
                   1815:        subl    $2, %esi
                   1816:        leal    2(%esi), %eax
                   1817:        movl    %eax, (%esp)
                   1818:        call    MemReadLong
                   1819:        movl    %eax, %ebx
                   1820:        leal    6(%esi), %eax
                   1821:        movl    %eax, (%esp)
                   1822:        call    MemReadLong
                   1823:        movl    %ebx, 8(%esp)
                   1824:        movl    STRam, %esi
                   1825:        xorl    %ebx, %ebx
                   1826:        movl    %ebx, 4(%esp)
                   1827:        addl    %esi, %eax
                   1828:        movl    %eax, (%esp)
                   1829:        call    memset
                   1830:        movl    -8(%ebp), %ebx
                   1831:        movl    -4(%ebp), %esi
                   1832:        movl    %ebp, %esp
                   1833:        popl    %ebp
                   1834:        ret
                   1835:        .size   Call_Memset, .-Call_Memset
                   1836:        .p2align 4,,15
                   1837: .globl Call_MemsetBlue
                   1838:        .type   Call_MemsetBlue, @function
                   1839: Call_MemsetBlue:
                   1840:        pushl   %ebp
                   1841:        movl    %esp, %ebp
                   1842:        subl    $24, %esp
                   1843:        movl    $15, (%esp)
                   1844:        movl    %ebx, -8(%ebp)
                   1845:        movl    %esi, -4(%ebp)
                   1846:        call    GetReg
                   1847:        movl    %eax, %esi
                   1848:        subl    $2, %esi
                   1849:        leal    2(%esi), %eax
                   1850:        movl    %eax, (%esp)
                   1851:        call    MemReadLong
                   1852:        movl    %eax, %ebx
                   1853:        leal    6(%esi), %eax
                   1854:        movl    %eax, (%esp)
                   1855:        call    MemReadLong
                   1856:        movl    %ebx, 8(%esp)
                   1857:        movl    STRam, %edx
                   1858:        movl    $14, %ecx
                   1859:        movl    %ecx, 4(%esp)
                   1860:        addl    %edx, %eax
                   1861:        movl    %eax, (%esp)
                   1862:        call    memset
                   1863:        movl    -8(%ebp), %ebx
                   1864:        movl    -4(%ebp), %esi
                   1865:        movl    %ebp, %esp
                   1866:        popl    %ebp
                   1867:        ret
                   1868:        .size   Call_MemsetBlue, .-Call_MemsetBlue
                   1869:        .p2align 4,,15
                   1870: .globl Call_Memcpy
                   1871:        .type   Call_Memcpy, @function
                   1872: Call_Memcpy:
                   1873:        pushl   %ebp
                   1874:        movl    %esp, %ebp
                   1875:        subl    $24, %esp
                   1876:        movl    $15, (%esp)
                   1877:        movl    %ebx, -12(%ebp)
                   1878:        movl    %esi, -8(%ebp)
                   1879:        movl    %edi, -4(%ebp)
                   1880:        call    GetReg
                   1881:        movl    %eax, %esi
                   1882:        subl    $2, %esi
                   1883:        leal    2(%esi), %eax
                   1884:        movl    %eax, (%esp)
                   1885:        call    MemReadLong
                   1886:        movl    %eax, %edi
                   1887:        leal    6(%esi), %eax
                   1888:        movl    %eax, (%esp)
                   1889:        call    MemReadLong
                   1890:        movl    %eax, %ebx
                   1891:        leal    10(%esi), %eax
                   1892:        movl    %eax, (%esp)
                   1893:        call    MemReadLong
                   1894:        movl    %eax, 8(%esp)
                   1895:        movl    STRam, %edx
                   1896:        leal    (%edi,%edx), %ecx
                   1897:        movl    %ecx, (%esp)
                   1898:        addl    %ebx, %edx
                   1899:        movl    %edx, 4(%esp)
                   1900:        call    memcpy
                   1901:        movl    -12(%ebp), %ebx
                   1902:        movl    -8(%ebp), %esi
                   1903:        movl    -4(%ebp), %edi
                   1904:        movl    %ebp, %esp
                   1905:        popl    %ebp
                   1906:        ret
                   1907:        .size   Call_Memcpy, .-Call_Memcpy
                   1908:        .section        .rodata
                   1909:        .align 32
                   1910:        .type   mouse_bmp, @object
                   1911:        .size   mouse_bmp, 256
                   1912: mouse_bmp:
                   1913:        .byte   0
                   1914:        .byte   0
                   1915:        .byte   -1
                   1916:        .byte   -1
                   1917:        .byte   -1
                   1918:        .byte   -1
                   1919:        .byte   -1
                   1920:        .byte   -1
                   1921:        .byte   -1
                   1922:        .byte   -1
                   1923:        .byte   -1
                   1924:        .byte   -1
                   1925:        .byte   -1
                   1926:        .byte   -1
                   1927:        .byte   -1
                   1928:        .byte   -1
                   1929:        .byte   0
                   1930:        .byte   15
                   1931:        .byte   0
                   1932:        .byte   -1
                   1933:        .byte   -1
                   1934:        .byte   -1
                   1935:        .byte   -1
                   1936:        .byte   -1
                   1937:        .byte   -1
                   1938:        .byte   -1
                   1939:        .byte   -1
                   1940:        .byte   -1
                   1941:        .byte   -1
                   1942:        .byte   -1
                   1943:        .byte   -1
                   1944:        .byte   -1
                   1945:        .byte   0
                   1946:        .byte   15
                   1947:        .byte   15
                   1948:        .byte   0
                   1949:        .byte   -1
                   1950:        .byte   -1
                   1951:        .byte   -1
                   1952:        .byte   -1
                   1953:        .byte   -1
                   1954:        .byte   -1
                   1955:        .byte   -1
                   1956:        .byte   -1
                   1957:        .byte   -1
                   1958:        .byte   -1
                   1959:        .byte   -1
                   1960:        .byte   -1
                   1961:        .byte   0
                   1962:        .byte   15
                   1963:        .byte   15
                   1964:        .byte   15
                   1965:        .byte   0
                   1966:        .byte   -1
                   1967:        .byte   -1
                   1968:        .byte   -1
                   1969:        .byte   -1
                   1970:        .byte   -1
                   1971:        .byte   -1
                   1972:        .byte   -1
                   1973:        .byte   -1
                   1974:        .byte   -1
                   1975:        .byte   -1
                   1976:        .byte   -1
                   1977:        .byte   0
                   1978:        .byte   15
                   1979:        .byte   15
                   1980:        .byte   15
                   1981:        .byte   15
                   1982:        .byte   0
                   1983:        .byte   -1
                   1984:        .byte   -1
                   1985:        .byte   -1
                   1986:        .byte   -1
                   1987:        .byte   -1
                   1988:        .byte   -1
                   1989:        .byte   -1
                   1990:        .byte   -1
                   1991:        .byte   -1
                   1992:        .byte   -1
                   1993:        .byte   0
                   1994:        .byte   15
                   1995:        .byte   15
                   1996:        .byte   15
                   1997:        .byte   15
                   1998:        .byte   15
                   1999:        .byte   0
                   2000:        .byte   -1
                   2001:        .byte   -1
                   2002:        .byte   -1
                   2003:        .byte   -1
                   2004:        .byte   -1
                   2005:        .byte   -1
                   2006:        .byte   -1
                   2007:        .byte   -1
                   2008:        .byte   -1
                   2009:        .byte   0
                   2010:        .byte   15
                   2011:        .byte   15
                   2012:        .byte   15
                   2013:        .byte   15
                   2014:        .byte   0
                   2015:        .byte   -1
                   2016:        .byte   -1
                   2017:        .byte   -1
                   2018:        .byte   -1
                   2019:        .byte   -1
                   2020:        .byte   -1
                   2021:        .byte   -1
                   2022:        .byte   -1
                   2023:        .byte   -1
                   2024:        .byte   -1
                   2025:        .byte   0
                   2026:        .byte   15
                   2027:        .byte   15
                   2028:        .byte   15
                   2029:        .byte   15
                   2030:        .byte   0
                   2031:        .byte   -1
                   2032:        .byte   -1
                   2033:        .byte   -1
                   2034:        .byte   -1
                   2035:        .byte   -1
                   2036:        .byte   -1
                   2037:        .byte   -1
                   2038:        .byte   -1
                   2039:        .byte   -1
                   2040:        .byte   -1
                   2041:        .byte   0
                   2042:        .byte   15
                   2043:        .byte   0
                   2044:        .byte   15
                   2045:        .byte   15
                   2046:        .byte   15
                   2047:        .byte   0
                   2048:        .byte   -1
                   2049:        .byte   -1
                   2050:        .byte   -1
                   2051:        .byte   -1
                   2052:        .byte   -1
                   2053:        .byte   -1
                   2054:        .byte   -1
                   2055:        .byte   -1
                   2056:        .byte   -1
                   2057:        .byte   0
                   2058:        .byte   0
                   2059:        .byte   -1
                   2060:        .byte   0
                   2061:        .byte   15
                   2062:        .byte   15
                   2063:        .byte   0
                   2064:        .byte   -1
                   2065:        .byte   -1
                   2066:        .byte   -1
                   2067:        .byte   -1
                   2068:        .byte   -1
                   2069:        .byte   -1
                   2070:        .byte   -1
                   2071:        .byte   -1
                   2072:        .byte   -1
                   2073:        .byte   -1
                   2074:        .byte   -1
                   2075:        .byte   -1
                   2076:        .byte   0
                   2077:        .byte   15
                   2078:        .byte   15
                   2079:        .byte   15
                   2080:        .byte   0
                   2081:        .byte   -1
                   2082:        .byte   -1
                   2083:        .byte   -1
                   2084:        .byte   -1
                   2085:        .byte   -1
                   2086:        .byte   -1
                   2087:        .byte   -1
                   2088:        .byte   -1
                   2089:        .byte   -1
                   2090:        .byte   -1
                   2091:        .byte   -1
                   2092:        .byte   -1
                   2093:        .byte   0
                   2094:        .byte   15
                   2095:        .byte   15
                   2096:        .byte   0
                   2097:        .byte   -1
                   2098:        .byte   -1
                   2099:        .byte   -1
                   2100:        .byte   -1
                   2101:        .byte   -1
                   2102:        .byte   -1
                   2103:        .byte   -1
                   2104:        .byte   -1
                   2105:        .byte   -1
                   2106:        .byte   -1
                   2107:        .byte   -1
                   2108:        .byte   -1
                   2109:        .byte   0
                   2110:        .byte   15
                   2111:        .byte   15
                   2112:        .byte   15
                   2113:        .byte   0
                   2114:        .byte   -1
                   2115:        .byte   -1
                   2116:        .byte   -1
                   2117:        .byte   -1
                   2118:        .byte   -1
                   2119:        .byte   -1
                   2120:        .byte   -1
                   2121:        .byte   -1
                   2122:        .byte   -1
                   2123:        .byte   -1
                   2124:        .byte   -1
                   2125:        .byte   -1
                   2126:        .byte   0
                   2127:        .byte   15
                   2128:        .byte   0
                   2129:        .byte   -1
                   2130:        .byte   -1
                   2131:        .byte   -1
                   2132:        .byte   -1
                   2133:        .byte   -1
                   2134:        .byte   -1
                   2135:        .byte   -1
                   2136:        .byte   -1
                   2137:        .byte   -1
                   2138:        .byte   -1
                   2139:        .byte   -1
                   2140:        .byte   -1
                   2141:        .byte   -1
                   2142:        .byte   -1
                   2143:        .byte   0
                   2144:        .byte   -1
                   2145:        .byte   -1
                   2146:        .byte   -1
                   2147:        .byte   -1
                   2148:        .byte   -1
                   2149:        .byte   -1
                   2150:        .byte   -1
                   2151:        .byte   -1
                   2152:        .byte   -1
                   2153:        .byte   -1
                   2154:        .byte   -1
                   2155:        .byte   -1
                   2156:        .byte   -1
                   2157:        .byte   -1
                   2158:        .byte   -1
                   2159:        .byte   -1
                   2160:        .byte   -1
                   2161:        .byte   -1
                   2162:        .byte   -1
                   2163:        .byte   -1
                   2164:        .byte   -1
                   2165:        .byte   -1
                   2166:        .byte   -1
                   2167:        .byte   -1
                   2168:        .byte   -1
                   2169:        .text
                   2170:        .p2align 4,,15
                   2171: .globl Call_BlitCursor
                   2172:        .type   Call_BlitCursor, @function
                   2173: Call_BlitCursor:
                   2174:        pushl   %ebp
                   2175:        movl    %esp, %ebp
                   2176:        pushl   %edi
                   2177:        pushl   %esi
                   2178:        movl    $mouse_bmp, %esi
                   2179:        pushl   %ebx
                   2180:        subl    $28, %esp
                   2181:        movl    $15, (%esp)
                   2182:        call    GetReg
                   2183:        movl    %eax, %ebx
                   2184:        subl    $2, %ebx
                   2185:        leal    2(%ebx), %eax
                   2186:        movl    %eax, (%esp)
                   2187:        call    MemReadLong
                   2188:        movl    %eax, %edi
                   2189:        leal    6(%ebx), %eax
                   2190:        movl    %eax, (%esp)
                   2191:        call    MemReadLong
                   2192:        movl    %eax, -20(%ebp)
                   2193:        leal    10(%ebx), %eax
                   2194:        movl    $under_mouse, %ebx
                   2195:        movl    %eax, (%esp)
                   2196:        call    MemReadLong
                   2197:        movl    $0, -16(%ebp)
                   2198:        movl    STRam, %ecx
                   2199:        addl    %ecx, %eax
                   2200:        movl    -20(%ebp), %ecx
                   2201:        leal    (%ecx,%ecx,4), %edx
                   2202:        sall    $6, %edx
                   2203:        addl    %edx, %eax
                   2204:        addl    %edi, %eax
                   2205:        movl    %eax, -24(%ebp)
                   2206: .L304:
                   2207:        movl    -16(%ebp), %eax
                   2208:        movl    -20(%ebp), %edx
                   2209:        addl    %edx, %eax
                   2210:        cmpl    $200, %eax
                   2211:        jg      .L293
                   2212:        movl    -24(%ebp), %edx
                   2213:        xorl    %ecx, %ecx
                   2214:        leal    320(%edx), %eax
                   2215:        movl    %eax, -24(%ebp)
                   2216:        .p2align 4,,15
                   2217: .L303:
                   2218:        leal    (%edi,%ecx), %eax
                   2219:        cmpl    $319, %eax
                   2220:        jle     .L308
                   2221: .L299:
                   2222:        incl    %ecx
                   2223:        incl    %edx
                   2224:        incl    %esi
                   2225:        incl    %ebx
                   2226:        cmpl    $15, %ecx
                   2227:        jle     .L303
                   2228:        incl    -16(%ebp)
                   2229:        cmpl    $15, -16(%ebp)
                   2230:        jle     .L304
                   2231: .L293:
                   2232:        addl    $28, %esp
                   2233:        popl    %ebx
                   2234:        popl    %esi
                   2235:        popl    %edi
                   2236:        popl    %ebp
                   2237:        ret
                   2238:        .p2align 4,,7
                   2239: .L308:
                   2240:        movzbl  (%edx), %eax
                   2241:        movb    %al, (%ebx)
                   2242:        movzbl  (%esi), %eax
                   2243:        cmpb    $-1, %al
                   2244:        je      .L299
                   2245:        movb    %al, (%edx)
                   2246:        jmp     .L299
                   2247:        .size   Call_BlitCursor, .-Call_BlitCursor
                   2248:        .p2align 4,,15
                   2249: .globl Call_RestoreUnderCursor
                   2250:        .type   Call_RestoreUnderCursor, @function
                   2251: Call_RestoreUnderCursor:
                   2252:        pushl   %ebp
                   2253:        movl    %esp, %ebp
                   2254:        pushl   %edi
                   2255:        xorl    %edi, %edi
                   2256:        pushl   %esi
                   2257:        pushl   %ebx
                   2258:        subl    $12, %esp
                   2259:        movl    $15, (%esp)
                   2260:        call    GetReg
                   2261:        movl    %eax, %ebx
                   2262:        subl    $2, %ebx
                   2263:        leal    2(%ebx), %eax
                   2264:        movl    %eax, (%esp)
                   2265:        call    MemReadLong
                   2266:        movl    %eax, %esi
                   2267:        leal    6(%ebx), %eax
                   2268:        movl    %eax, (%esp)
                   2269:        call    MemReadLong
                   2270:        movl    %eax, -16(%ebp)
                   2271:        leal    10(%ebx), %eax
                   2272:        movl    %eax, (%esp)
                   2273:        call    MemReadLong
                   2274:        movl    -16(%ebp), %ecx
                   2275:        movl    STRam, %ebx
                   2276:        leal    (%ecx,%ecx,4), %edx
                   2277:        addl    %ebx, %eax
                   2278:        sall    $6, %edx
                   2279:        addl    %edx, %eax
                   2280:        addl    %esi, %eax
                   2281:        movl    $under_mouse, %ebx
                   2282:        movl    %eax, -20(%ebp)
                   2283: .L322:
                   2284:        movl    -16(%ebp), %edx
                   2285:        leal    (%edx,%edi), %eax
                   2286:        cmpl    $200, %eax
                   2287:        jg      .L311
                   2288:        movl    -20(%ebp), %edx
                   2289:        leal    320(%edx), %ecx
                   2290:        movl    %ecx, -20(%ebp)
                   2291:        xorl    %ecx, %ecx
                   2292:        .p2align 4,,15
                   2293: .L321:
                   2294:        leal    (%esi,%ecx), %eax
                   2295:        cmpl    $319, %eax
                   2296:        jle     .L326
                   2297: .L317:
                   2298:        incl    %ecx
                   2299:        incl    %edx
                   2300:        incl    %ebx
                   2301:        cmpl    $15, %ecx
                   2302:        jle     .L321
                   2303:        incl    %edi
                   2304:        cmpl    $15, %edi
                   2305:        jle     .L322
                   2306: .L311:
                   2307:        addl    $12, %esp
                   2308:        popl    %ebx
                   2309:        popl    %esi
                   2310:        popl    %edi
                   2311:        popl    %ebp
                   2312:        ret
                   2313:        .p2align 4,,7
                   2314: .L326:
                   2315:        movzbl  (%ebx), %eax
                   2316:        cmpb    $-1, %al
                   2317:        je      .L317
                   2318:        movb    %al, (%edx)
                   2319:        jmp     .L317
                   2320:        .size   Call_RestoreUnderCursor, .-Call_RestoreUnderCursor
                   2321:        .p2align 4,,15
                   2322: .globl Call_PutPix
                   2323:        .type   Call_PutPix, @function
                   2324: Call_PutPix:
                   2325:        pushl   %ebp
                   2326:        movl    %esp, %ebp
                   2327:        subl    $24, %esp
                   2328:        movl    $15, (%esp)
                   2329:        movl    %ebx, -8(%ebp)
                   2330:        movl    %esi, -4(%ebp)
                   2331:        call    GetReg
                   2332:        movl    %eax, (%esp)
                   2333:        call    MemReadWord
                   2334:        movl    $4, (%esp)
                   2335:        movswl  %ax,%ebx
                   2336:        sarl    $2, %ebx
                   2337:        call    GetReg
                   2338:        movl    $11, (%esp)
                   2339:        movzwl  %ax, %esi
                   2340:        call    GetReg
                   2341:        testl   $1048576, %eax
                   2342:        je      .L328
                   2343:        leal    -1048576(%eax,%eax), %eax
                   2344: .L329:
                   2345:        movl    STRam, %edx
                   2346:        addl    %edx, %eax
                   2347:        movb    %bl, (%esi,%eax)
                   2348:        movl    -8(%ebp), %ebx
                   2349:        movl    -4(%ebp), %esi
                   2350:        movl    %ebp, %esp
                   2351:        popl    %ebp
                   2352:        ret
                   2353:        .p2align 4,,7
                   2354: .L328:
                   2355:        leal    -983040(%eax,%eax), %eax
                   2356:        jmp     .L329
                   2357:        .size   Call_PutPix, .-Call_PutPix
                   2358:        .p2align 4,,15
                   2359: .globl Call_FillLine
                   2360:        .type   Call_FillLine, @function
                   2361: Call_FillLine:
                   2362:        pushl   %ebp
                   2363:        movl    %esp, %ebp
                   2364:        pushl   %ebx
                   2365:        subl    $4, %esp
                   2366:        movl    $15, (%esp)
                   2367:        call    GetReg
                   2368:        movl    %eax, (%esp)
                   2369:        call    MemReadWord
                   2370:        movl    $4, (%esp)
                   2371:        movswl  %ax,%ebx
                   2372:        sarl    $2, %ebx
                   2373:        call    GetReg
                   2374:        movl    $5, (%esp)
                   2375:        call    GetReg
                   2376:        movl    $11, (%esp)
                   2377:        call    GetReg
                   2378:        testl   $1048576, %eax
                   2379:        je      .L331
                   2380:        leal    -1048576(%eax,%eax), %eax
                   2381: .L332:
                   2382:        movl    STRam, %edx
                   2383:        addl    %edx, %eax
                   2384:        movl    $319, %edx
                   2385:        .p2align 4,,15
                   2386: .L336:
                   2387:        movb    %bl, (%eax)
                   2388:        decl    %edx
                   2389:        incl    %eax
                   2390:        cmpl    $-1, %edx
                   2391:        jne     .L336
                   2392:        popl    %ecx
                   2393:        popl    %ebx
                   2394:        popl    %ebp
                   2395:        ret
                   2396: .L331:
                   2397:        leal    -983040(%eax,%eax), %eax
                   2398:        jmp     .L332
                   2399:        .size   Call_FillLine, .-Call_FillLine
                   2400:        .p2align 4,,15
                   2401: .globl Call_BackHLine
                   2402:        .type   Call_BackHLine, @function
                   2403: Call_BackHLine:
                   2404:        pushl   %ebp
                   2405:        movl    %esp, %ebp
                   2406:        pushl   %edi
                   2407:        pushl   %esi
                   2408:        pushl   %ebx
                   2409:        subl    $12, %esp
                   2410:        movl    $15, (%esp)
                   2411:        call    GetReg
                   2412:        movl    %eax, (%esp)
                   2413:        call    MemReadWord
                   2414:        movl    $11, (%esp)
                   2415:        movswl  %ax,%edi
                   2416:        sarl    $2, %edi
                   2417:        call    GetReg
                   2418:        movl    $7, (%esp)
                   2419:        movl    %eax, %esi
                   2420:        call    GetReg
                   2421:        testl   $1048576, %esi
                   2422:        movzwl  %ax, %ebx
                   2423:        je      .L340
                   2424:        leal    -1048576(%esi,%esi), %esi
                   2425: .L341:
                   2426:        movl    STRam, %edx
                   2427:        movl    $15, %ecx
                   2428:        addl    %esi, %edx
                   2429:        .p2align 4,,15
                   2430: .L347:
                   2431:        movl    %ebx, %eax
                   2432:        sarl    %cl, %eax
                   2433:        testb   $1, %al
                   2434:        je      .L346
                   2435:        cmpb    $0, (%edx)
                   2436:        jne     .L346
                   2437:        movl    %edi, %eax
                   2438:        movb    %al, (%edx)
                   2439:        .p2align 4,,15
                   2440: .L346:
                   2441:        incl    %edx
                   2442:        decl    %ecx
                   2443:        jns     .L347
                   2444:        addl    $12, %esp
                   2445:        popl    %ebx
                   2446:        popl    %esi
                   2447:        popl    %edi
                   2448:        popl    %ebp
                   2449:        ret
                   2450: .L340:
                   2451:        leal    -983040(%esi,%esi), %esi
                   2452:        jmp     .L341
                   2453:        .size   Call_BackHLine, .-Call_BackHLine
                   2454:        .p2align 4,,15
                   2455: .globl Call_OldHLine
                   2456:        .type   Call_OldHLine, @function
                   2457: Call_OldHLine:
                   2458:        pushl   %ebp
                   2459:        movl    %esp, %ebp
                   2460:        pushl   %edi
                   2461:        pushl   %esi
                   2462:        pushl   %ebx
                   2463:        subl    $12, %esp
                   2464:        movl    $15, (%esp)
                   2465:        call    GetReg
                   2466:        movl    %eax, (%esp)
                   2467:        call    MemReadWord
                   2468:        movl    $4, (%esp)
                   2469:        movswl  %ax,%esi
                   2470:        sarl    $2, %esi
                   2471:        call    GetReg
                   2472:        movl    $5, (%esp)
                   2473:        movzwl  %ax, %edi
                   2474:        call    GetReg
                   2475:        movl    $11, (%esp)
                   2476:        movzwl  %ax, %ebx
                   2477:        call    GetReg
                   2478:        testl   $1048576, %eax
                   2479:        leal    -1048576(%eax,%eax), %edx
                   2480:        jne     .L352
                   2481:        leal    -983040(%eax,%eax), %edx
                   2482: .L352:
                   2483:        movl    %ebx, %eax
                   2484:        movl    STRam, %ecx
                   2485:        shrl    $31, %eax
                   2486:        addl    %eax, %ebx
                   2487:        sarl    %ebx
                   2488:        addl    %ecx, %edx
                   2489:        decl    %ebx
                   2490:        leal    (%edi,%edx), %eax
                   2491:        cmpl    $-1, %ebx
                   2492:        je      .L358
                   2493:        .p2align 4,,15
                   2494: .L356:
                   2495:        movl    %esi, %edx
                   2496:        decl    %ebx
                   2497:        movb    %dl, (%eax)
                   2498:        incl    %eax
                   2499:        cmpl    $-1, %ebx
                   2500:        jne     .L356
                   2501: .L358:
                   2502:        addl    $12, %esp
                   2503:        popl    %ebx
                   2504:        popl    %esi
                   2505:        popl    %edi
                   2506:        popl    %ebp
                   2507:        ret
                   2508:        .size   Call_OldHLine, .-Call_OldHLine
                   2509:        .p2align 4,,15
                   2510: .globl Call_HLine
                   2511:        .type   Call_HLine, @function
                   2512: Call_HLine:
                   2513:        pushl   %ebp
                   2514:        movl    %esp, %ebp
                   2515:        pushl   %edi
                   2516:        pushl   %esi
                   2517:        pushl   %ebx
                   2518:        subl    $12, %esp
                   2519:        movl    $1, (%esp)
                   2520:        call    GetReg
                   2521:        movl    $4, (%esp)
                   2522:        movzwl  %ax,%esi
                   2523:        sarl    $2, %esi
                   2524:        call    GetReg
                   2525:        movl    $5, (%esp)
                   2526:        movzwl  %ax,%edi
                   2527:        call    GetReg
                   2528:        movl    $11, (%esp)
                   2529:        movzwl  %ax,%ebx
                   2530:        decl    %ebx
                   2531:        call    GetReg
                   2532:        movl    STRam, %edx
                   2533:        addl    %edx, %eax
                   2534:        addl    %edi, %eax
                   2535:        cmpl    $-1, %ebx
                   2536:        je      .L365
                   2537:        .p2align 4,,15
                   2538: .L363:
                   2539:        movl    %esi, %edx
                   2540:        decl    %ebx
                   2541:        movb    %dl, (%eax)
                   2542:        incl    %eax
                   2543:        cmpl    $-1, %ebx
                   2544:        jne     .L363
                   2545: .L365:
                   2546:        addl    $12, %esp
                   2547:        popl    %ebx
                   2548:        popl    %esi
                   2549:        popl    %edi
                   2550:        popl    %ebp
                   2551:        ret
                   2552:        .size   Call_HLine, .-Call_HLine
                   2553:        .p2align 4,,15
                   2554: .globl Call_BlitBmp
                   2555:        .type   Call_BlitBmp, @function
                   2556: Call_BlitBmp:
                   2557:        pushl   %ebp
                   2558:        movl    %esp, %ebp
                   2559:        pushl   %edi
                   2560:        pushl   %esi
                   2561:        pushl   %ebx
                   2562:        subl    $60, %esp
                   2563:        movl    $15, (%esp)
                   2564:        call    GetReg
                   2565:        movl    %eax, %esi
                   2566:        subl    $2, %esi
                   2567:        leal    2(%esi), %eax
                   2568:        movl    %eax, (%esp)
                   2569:        call    MemReadWord
                   2570:        cwtl
                   2571:        movl    %eax, -16(%ebp)
                   2572:        leal    4(%esi), %eax
                   2573:        movl    %eax, (%esp)
                   2574:        call    MemReadWord
                   2575:        cwtl
                   2576:        movl    %eax, -20(%ebp)
                   2577:        leal    6(%esi), %eax
                   2578:        movl    %eax, (%esp)
                   2579:        call    MemReadWord
                   2580:        cwtl
                   2581:        movl    %eax, -24(%ebp)
                   2582:        leal    8(%esi), %eax
                   2583:        movl    %eax, (%esp)
                   2584:        call    MemReadWord
                   2585:        movswl  %ax,%edi
                   2586:        leal    10(%esi), %eax
                   2587:        movl    %eax, (%esp)
                   2588:        call    MemReadLong
                   2589:        movl    %eax, %ebx
                   2590:        leal    14(%esi), %eax
                   2591:        movl    %eax, (%esp)
                   2592:        call    MemReadLong
                   2593:        movl    STRam, %edx
                   2594:        movl    -24(%ebp), %esi
                   2595:        leal    4(%ebx,%edx), %ebx
                   2596:        movl    %ebx, -28(%ebp)
                   2597:        addl    %eax, %edx
                   2598:        movl    -24(%ebp), %ebx
                   2599:        leal    (%edi,%edi,4), %eax
                   2600:        sall    $6, %eax
                   2601:        addl    %eax, %edx
                   2602:        addl    %esi, %edx
                   2603:        testl   %ebx, %ebx
                   2604:        movl    %edx, -32(%ebp)
                   2605:        js      .L366
                   2606:        testl   %edi, %edi
                   2607:        js      .L366
                   2608:        cmpl    $200, -20(%ebp)
                   2609:        jg      .L366
                   2610:        cmpl    $320, -16(%ebp)
                   2611:        jg      .L366
                   2612:        movl    -20(%ebp), %eax
                   2613:        movl    -16(%ebp), %ecx
                   2614:        imull   %ecx, %eax
                   2615:        addl    %eax, %eax
                   2616:        movl    %eax, -56(%ebp)
                   2617:        movl    -20(%ebp), %eax
                   2618:        decl    %eax
                   2619:        movl    %eax, -40(%ebp)
                   2620:        incl    %eax
                   2621:        je      .L366
                   2622: .L388:
                   2623:        movl    -32(%ebp), %esi
                   2624:        movl    -16(%ebp), %eax
                   2625:        leal    320(%esi), %edx
                   2626:        movl    %edx, -32(%ebp)
                   2627:        testl   %eax, %eax
                   2628:        movl    %eax, -36(%ebp)
                   2629:        je      .L391
                   2630:        movl    -56(%ebp), %edx
                   2631:        leal    (%edx,%edx,2), %edx
                   2632:        movl    %edx, -60(%ebp)
                   2633: .L387:
                   2634:        movl    -28(%ebp), %edx
                   2635:        xorl    %ebx, %ebx
                   2636:        movzwl  (%edx), %eax
                   2637: #APP
                   2638:        xchgb %al,%ah
                   2639: #NO_APP
                   2640:        cwtl
                   2641:        movl    %eax, -44(%ebp)
                   2642:        movl    -56(%ebp), %eax
                   2643:        addl    %eax, %edx
                   2644:        movzwl  (%edx), %eax
                   2645: #APP
                   2646:        xchgb %al,%ah
                   2647: #NO_APP
                   2648:        movl    %edx, -28(%ebp)
                   2649:        cwtl
                   2650:        movl    %eax, -48(%ebp)
                   2651:        movl    -56(%ebp), %eax
                   2652:        addl    %eax, %edx
                   2653:        movzwl  (%edx), %eax
                   2654: #APP
                   2655:        xchgb %al,%ah
                   2656: #NO_APP
                   2657:        movl    %edx, -28(%ebp)
                   2658:        cwtl
                   2659:        movl    %eax, -52(%ebp)
                   2660:        movl    -56(%ebp), %eax
                   2661:        addl    %eax, %edx
                   2662:        movzwl  (%edx), %eax
                   2663:        movl    %edx, -28(%ebp)
                   2664: #APP
                   2665:        xchgb %al,%ah
                   2666: #NO_APP
                   2667:        movswl  %ax,%edi
                   2668:        .p2align 4,,15
                   2669: .L386:
                   2670:        movl    -44(%ebp), %eax
                   2671:        movl    $15, %ecx
                   2672:        subl    %ebx, %ecx
                   2673:        incl    %ebx
                   2674:        sarl    %cl, %eax
                   2675:        movb    %al, %dl
                   2676:        movl    -48(%ebp), %eax
                   2677:        andb    $1, %dl
                   2678:        sarl    %cl, %eax
                   2679:        andl    $1, %eax
                   2680:        addl    %eax, %eax
                   2681:        orb     %al, %dl
                   2682:        movl    -52(%ebp), %eax
                   2683:        sarl    %cl, %eax
                   2684:        andl    $1, %eax
                   2685:        sall    $2, %eax
                   2686:        orb     %al, %dl
                   2687:        movl    %edi, %eax
                   2688:        sarl    %cl, %eax
                   2689:        andl    $1, %eax
                   2690:        sall    $3, %eax
                   2691:        orb     %al, %dl
                   2692:        movb    %dl, (%esi)
                   2693:        incl    %esi
                   2694:        cmpl    $15, %ebx
                   2695:        jle     .L386
                   2696:        movl    -60(%ebp), %edx
                   2697:        subl    %edx, -28(%ebp)
                   2698:        addl    $2, -28(%ebp)
                   2699:        decl    -36(%ebp)
                   2700:        jne     .L387
                   2701: .L391:
                   2702:        decl    -40(%ebp)
                   2703:        cmpl    $-1, -40(%ebp)
                   2704:        jne     .L388
                   2705: .L366:
                   2706:        addl    $60, %esp
                   2707:        popl    %ebx
                   2708:        popl    %esi
                   2709:        popl    %edi
                   2710:        popl    %ebp
                   2711:        ret
                   2712:        .size   Call_BlitBmp, .-Call_BlitBmp
                   2713:        .p2align 4,,15
                   2714: .globl Call_DrawStrShadowed
                   2715:        .type   Call_DrawStrShadowed, @function
                   2716: Call_DrawStrShadowed:
                   2717:        pushl   %ebp
                   2718:        movl    %esp, %ebp
                   2719:        subl    $40, %esp
                   2720:        movl    $8, (%esp)
                   2721:        movl    %ebx, -12(%ebp)
                   2722:        movl    %esi, -8(%ebp)
                   2723:        movl    %edi, -4(%ebp)
                   2724:        call    GetReg
                   2725:        movl    $0, (%esp)
                   2726:        movl    STRam, %ecx
                   2727:        movl    %eax, %ebx
                   2728:        addl    %ecx, %ebx
                   2729:        call    GetReg
                   2730:        movl    $2, (%esp)
                   2731:        movl    %eax, %edi
                   2732:        call    GetReg
                   2733:        movl    $1, (%esp)
                   2734:        movl    %eax, %esi
                   2735:        call    GetReg
                   2736:        movl    %eax, (%esp)
                   2737:        movl    $1, %edx
                   2738:        movl    %edx, 16(%esp)
                   2739:        movl    %ebx, 12(%esp)
                   2740:        movl    %edi, 8(%esp)
                   2741:        movl    %esi, 4(%esp)
                   2742:        call    DrawStr
                   2743:        movl    %eax, 4(%esp)
                   2744:        movl    $1, (%esp)
                   2745:        call    SetReg
                   2746:        movl    -12(%ebp), %ebx
                   2747:        movl    -8(%ebp), %esi
                   2748:        movl    -4(%ebp), %edi
                   2749:        movl    %ebp, %esp
                   2750:        popl    %ebp
                   2751:        ret
                   2752:        .size   Call_DrawStrShadowed, .-Call_DrawStrShadowed
                   2753:        .p2align 4,,15
                   2754: .globl Call_DrawStr
                   2755:        .type   Call_DrawStr, @function
                   2756: Call_DrawStr:
                   2757:        pushl   %ebp
                   2758:        movl    %esp, %ebp
                   2759:        subl    $40, %esp
                   2760:        movl    $8, (%esp)
                   2761:        movl    %ebx, -12(%ebp)
                   2762:        movl    %esi, -8(%ebp)
                   2763:        movl    %edi, -4(%ebp)
                   2764:        call    GetReg
                   2765:        movl    $0, (%esp)
                   2766:        movl    STRam, %ecx
                   2767:        movl    %eax, %ebx
                   2768:        addl    %ecx, %ebx
                   2769:        call    GetReg
                   2770:        movl    $2, (%esp)
                   2771:        movl    %eax, %edi
                   2772:        call    GetReg
                   2773:        movl    $1, (%esp)
                   2774:        movl    %eax, %esi
                   2775:        call    GetReg
                   2776:        movl    %eax, (%esp)
                   2777:        xorl    %edx, %edx
                   2778:        movl    %edx, 16(%esp)
                   2779:        movl    %ebx, 12(%esp)
                   2780:        movl    %edi, 8(%esp)
                   2781:        movl    %esi, 4(%esp)
                   2782:        call    DrawStr
                   2783:        movl    %eax, 4(%esp)
                   2784:        movl    $1, (%esp)
                   2785:        call    SetReg
                   2786:        movl    -12(%ebp), %ebx
                   2787:        movl    -8(%ebp), %esi
                   2788:        movl    -4(%ebp), %edi
                   2789:        movl    %ebp, %esp
                   2790:        popl    %ebp
                   2791:        ret
                   2792:        .size   Call_DrawStr, .-Call_DrawStr
                   2793:        .p2align 4,,15
                   2794: .globl Call_SetMainPalette
                   2795:        .type   Call_SetMainPalette, @function
                   2796: Call_SetMainPalette:
                   2797:        pushl   %ebp
                   2798:        movl    %esp, %ebp
                   2799:        pushl   %esi
                   2800:        xorl    %esi, %esi
                   2801:        pushl   %ebx
                   2802:        subl    $16, %esp
                   2803:        movl    $15, (%esp)
                   2804:        call    GetReg
                   2805:        movl    %eax, (%esp)
                   2806:        call    MemReadLong
                   2807:        movl    %eax, %ebx
                   2808:        .p2align 4,,15
                   2809: .L401:
                   2810:        movl    %ebx, (%esp)
                   2811:        addl    $2, %ebx
                   2812:        call    MemReadWord
                   2813:        movw    %ax, MainPalette(%esi,%esi)
                   2814:        incl    %esi
                   2815:        cmpl    $15, %esi
                   2816:        jle     .L401
                   2817:        addl    $16, %esp
                   2818:        popl    %ebx
                   2819:        popl    %esi
                   2820:        popl    %ebp
                   2821:        ret
                   2822:        .size   Call_SetMainPalette, .-Call_SetMainPalette
                   2823:        .p2align 4,,15
                   2824: .globl Call_SetCtrlPalette
                   2825:        .type   Call_SetCtrlPalette, @function
                   2826: Call_SetCtrlPalette:
                   2827:        pushl   %ebp
                   2828:        movl    %esp, %ebp
                   2829:        pushl   %esi
                   2830:        xorl    %esi, %esi
                   2831:        pushl   %ebx
                   2832:        subl    $16, %esp
                   2833:        movl    $15, (%esp)
                   2834:        call    GetReg
                   2835:        movl    %eax, (%esp)
                   2836:        call    MemReadLong
                   2837:        movl    %eax, %ebx
                   2838:        .p2align 4,,15
                   2839: .L409:
                   2840:        movl    %ebx, (%esp)
                   2841:        addl    $2, %ebx
                   2842:        call    MemReadWord
                   2843:        movw    %ax, CtrlPalette(%esi,%esi)
                   2844:        incl    %esi
                   2845:        cmpl    $15, %esi
                   2846:        jle     .L409
                   2847:        addl    $16, %esp
                   2848:        popl    %ebx
                   2849:        popl    %esi
                   2850:        popl    %ebp
                   2851:        ret
                   2852:        .size   Call_SetCtrlPalette, .-Call_SetCtrlPalette
                   2853:        .p2align 4,,15
                   2854: .globl Call_InformScreens
                   2855:        .type   Call_InformScreens, @function
                   2856: Call_InformScreens:
                   2857:        pushl   %ebp
                   2858:        movl    %esp, %ebp
                   2859:        subl    $8, %esp
                   2860:        movl    $15, (%esp)
                   2861:        movl    %ebx, -4(%ebp)
                   2862:        call    GetReg
                   2863:        movl    %eax, %ebx
                   2864:        subl    $2, %ebx
                   2865:        leal    2(%ebx), %eax
                   2866:        movl    %eax, (%esp)
                   2867:        call    MemReadLong
                   2868:        movl    %eax, physcreen2
                   2869:        leal    6(%ebx), %eax
                   2870:        movl    %eax, (%esp)
                   2871:        call    MemReadLong
                   2872:        movl    %eax, logscreen2
                   2873:        leal    10(%ebx), %eax
                   2874:        movl    %eax, (%esp)
                   2875:        call    MemReadLong
                   2876:        movl    %eax, physcreen
                   2877:        leal    14(%ebx), %eax
                   2878:        movl    %eax, (%esp)
                   2879:        call    MemReadLong
                   2880:        movl    %eax, logscreen
                   2881:        movl    -4(%ebp), %ebx
                   2882:        movl    %ebp, %esp
                   2883:        popl    %ebp
                   2884:        ret
                   2885:        .size   Call_InformScreens, .-Call_InformScreens
                   2886:        .p2align 4,,15
                   2887: .globl Call_SetScreenBase
                   2888:        .type   Call_SetScreenBase, @function
                   2889: Call_SetScreenBase:
                   2890:        pushl   %ebp
                   2891:        movl    %esp, %ebp
                   2892:        pushl   %ebx
                   2893:        subl    $4, %esp
                   2894:        movl    $15, (%esp)
                   2895:        call    GetReg
                   2896:        movl    %eax, (%esp)
                   2897:        call    MemReadLong
                   2898:        movl    %eax, VideoBase
                   2899:        movl    STRam, %edx
                   2900:        movl    len_working_ext_pal, %ecx
                   2901:        addl    %edx, %eax
                   2902:        xorl    %edx, %edx
                   2903:        cmpl    %ecx, %edx
                   2904:        movl    %eax, VideoRaster
                   2905:        jge     .L420
                   2906:        movl    $MainPalette, %ebx
                   2907:        .p2align 4,,15
                   2908: .L418:
                   2909:        movzwl  working_ext_pal(%edx,%edx), %eax
                   2910:        movw    %ax, 32(%ebx,%edx,2)
                   2911:        incl    %edx
                   2912:        cmpl    %ecx, %edx
                   2913:        jl      .L418
                   2914: .L420:
                   2915:        leal    16(%ecx), %eax
                   2916:        movl    %eax, len_main_palette
                   2917:        popl    %ebx
                   2918:        popl    %ebx
                   2919:        popl    %ebp
                   2920:        ret
                   2921:        .size   Call_SetScreenBase, .-Call_SetScreenBase
                   2922:        .p2align 4,,15
                   2923: .globl Call_MakeExtPalette
                   2924:        .type   Call_MakeExtPalette, @function
                   2925: Call_MakeExtPalette:
                   2926:        pushl   %ebp
                   2927:        movl    %esp, %ebp
                   2928:        pushl   %edi
                   2929:        pushl   %esi
                   2930:        xorl    %esi, %esi
                   2931:        pushl   %ebx
                   2932:        subl    $12, %esp
                   2933:        movl    $15, (%esp)
                   2934:        call    GetReg
                   2935:        movl    %eax, (%esp)
                   2936:        call    MemReadLong
                   2937:        movl    %eax, (%esp)
                   2938:        movl    %eax, %ebx
                   2939:        addl    $2, %ebx
                   2940:        call    MemReadWord
                   2941:        movswl  %ax,%edi
                   2942:        sarl    $2, %edi
                   2943:        cmpl    %edi, %esi
                   2944:        movl    %edi, len_working_ext_pal
                   2945:        jl      .L426
                   2946: .L428:
                   2947:        addl    $12, %esp
                   2948:        popl    %ebx
                   2949:        popl    %esi
                   2950:        popl    %edi
                   2951:        popl    %ebp
                   2952:        ret
                   2953:        .p2align 4,,7
                   2954: .L426:
                   2955:        movl    %ebx, (%esp)
                   2956:        addl    $2, %ebx
                   2957:        call    MemReadWord
                   2958:        movw    %ax, working_ext_pal(%esi,%esi)
                   2959:        incl    %esi
                   2960:        movl    %ebx, (%esp)
                   2961:        call    MemReadWord
                   2962:        movl    %ebx, (%esp)
                   2963:        cwtl
                   2964:        addl    $64, %eax
                   2965:        movl    %eax, 4(%esp)
                   2966:        addl    $2, %ebx
                   2967:        call    MemWriteWord
                   2968:        cmpl    %edi, %esi
                   2969:        jl      .L426
                   2970:        jmp     .L428
                   2971:        .size   Call_MakeExtPalette, .-Call_MakeExtPalette
                   2972:        .section        .rodata.str1.1
                   2973: .LC11:
                   2974:        .string "D: "
                   2975: .LC12:
                   2976:        .string "$%x "
                   2977: .LC13:
                   2978:        .string "A: "
                   2979:        .text
                   2980:        .p2align 4,,15
                   2981: .globl Call_DumpRegs
                   2982:        .type   Call_DumpRegs, @function
                   2983: Call_DumpRegs:
                   2984:        pushl   %ebp
                   2985:        movl    %esp, %ebp
                   2986:        pushl   %ebx
                   2987:        subl    $20, %esp
                   2988:        xorl    %ebx, %ebx
                   2989:        movl    $.LC11, (%esp)
                   2990:        call    printf
                   2991:        .p2align 4,,15
                   2992: .L434:
                   2993:        movl    %ebx, (%esp)
                   2994:        incl    %ebx
                   2995:        call    GetReg
                   2996:        movl    %eax, 4(%esp)
                   2997:        movl    $.LC12, (%esp)
                   2998:        call    printf
                   2999:        cmpl    $7, %ebx
                   3000:        jle     .L434
                   3001:        movl    $10, (%esp)
                   3002:        xorl    %ebx, %ebx
                   3003:        call    putchar
                   3004:        movl    $.LC13, (%esp)
                   3005:        call    printf
                   3006:        .p2align 4,,15
                   3007: .L439:
                   3008:        leal    8(%ebx), %eax
                   3009:        incl    %ebx
                   3010:        movl    %eax, (%esp)
                   3011:        call    GetReg
                   3012:        movl    %eax, 4(%esp)
                   3013:        movl    $.LC12, (%esp)
                   3014:        call    printf
                   3015:        cmpl    $7, %ebx
                   3016:        jle     .L439
                   3017:        movl    $10, (%esp)
                   3018:        call    putchar
                   3019:        addl    $20, %esp
                   3020:        popl    %ebx
                   3021:        popl    %ebp
                   3022:        ret
                   3023:        .size   Call_DumpRegs, .-Call_DumpRegs
                   3024:        .p2align 4,,15
                   3025: .globl Call_NotifyOfScrFlip
                   3026:        .type   Call_NotifyOfScrFlip, @function
                   3027: Call_NotifyOfScrFlip:
                   3028:        pushl   %ebp
                   3029:        movl    $1, %ecx
                   3030:        movl    %esp, %ebp
                   3031:        popl    %ebp
                   3032:        movl    %ecx, bScreenContentsChanged
                   3033:        ret
                   3034:        .size   Call_NotifyOfScrFlip, .-Call_NotifyOfScrFlip
                   3035:        .p2align 4,,15
                   3036: .globl Call_NotifyMousePos
                   3037:        .type   Call_NotifyMousePos, @function
                   3038: Call_NotifyMousePos:
                   3039:        pushl   %ebp
                   3040:        movl    %esp, %ebp
                   3041:        popl    %ebp
                   3042:        ret
                   3043:        .size   Call_NotifyMousePos, .-Call_NotifyMousePos
                   3044:        .p2align 4,,15
                   3045: .globl Call_DrawQuad
                   3046:        .type   Call_DrawQuad, @function
                   3047: Call_DrawQuad:
                   3048:        pushl   %ebp
                   3049:        movl    %esp, %ebp
                   3050:        pushl   %esi
                   3051:        pushl   %ebx
                   3052:        subl    $48, %esp
                   3053:        movl    $0, (%esp)
                   3054:        call    GetReg
                   3055:        pushl   %eax
                   3056:        fildl   (%esp)
                   3057:        addl    $4, %esp
                   3058:        movl    $1, (%esp)
                   3059:        fstps   -40(%ebp)
                   3060:        call    GetReg
                   3061:        pushl   %eax
                   3062:        fildl   (%esp)
                   3063:        addl    $4, %esp
                   3064:        movl    $2, (%esp)
                   3065:        fstps   -36(%ebp)
                   3066:        call    GetReg
                   3067:        pushl   %eax
                   3068:        fildl   (%esp)
                   3069:        addl    $4, %esp
                   3070:        movl    $3, (%esp)
                   3071:        fstps   -32(%ebp)
                   3072:        call    GetReg
                   3073:        pushl   %eax
                   3074:        fildl   (%esp)
                   3075:        addl    $4, %esp
                   3076:        movl    $4, (%esp)
                   3077:        fstps   -28(%ebp)
                   3078:        call    GetReg
                   3079:        pushl   %eax
                   3080:        fildl   (%esp)
                   3081:        addl    $4, %esp
                   3082:        movl    $5, (%esp)
                   3083:        fstps   -24(%ebp)
                   3084:        call    GetReg
                   3085:        pushl   %eax
                   3086:        fildl   (%esp)
                   3087:        addl    $4, %esp
                   3088:        movl    $6, (%esp)
                   3089:        fstps   -20(%ebp)
                   3090:        call    GetReg
                   3091:        pushl   %eax
                   3092:        fildl   (%esp)
                   3093:        addl    $4, %esp
                   3094:        movl    $7, (%esp)
                   3095:        fstps   -16(%ebp)
                   3096:        call    GetReg
                   3097:        pushl   %eax
                   3098:        xorl    %edx, %edx
                   3099:        fld1
                   3100:        fildl   (%esp)
                   3101:        addl    $4, %esp
                   3102:        fstps   -12(%ebp)
                   3103:        .p2align 4,,15
                   3104: .L462:
                   3105:        xorl    %ecx, %ecx
                   3106:        movl    $-1, %ebx
                   3107:        xorl    %esi, %esi
                   3108:        .p2align 4,,15
                   3109: .L460:
                   3110:        cmpl    %esi, %edx
                   3111:        je      .L453
                   3112:        flds    -36(%ebp,%edx,8)
                   3113:        flds    -36(%ebp,%esi,8)
                   3114:        fxch    %st(1)
                   3115:        fucom   %st(1)
                   3116:        fnstsw  %ax
                   3117:        sahf
                   3118:        jbe     .L456
                   3119:        incl    %ecx
                   3120: .L456:
                   3121:        fucompp
                   3122:        fnstsw  %ax
                   3123:        sahf
                   3124:        jne     .L453
                   3125:        jp      .L453
                   3126:        movl    %esi, %ebx
                   3127:        .p2align 4,,15
                   3128: .L453:
                   3129:        incl    %esi
                   3130:        cmpl    $3, %esi
                   3131:        jle     .L460
                   3132:        cmpl    $2, %ecx
                   3133:        je      .L467
                   3134: .L449:
                   3135:        incl    %edx
                   3136:        cmpl    $3, %edx
                   3137:        jle     .L462
                   3138:        fstp    %st(0)
                   3139: .L448:
                   3140:        movl    $8, (%esp)
                   3141:        call    GetReg
                   3142:        testl   %eax, %eax
                   3143:        js      .L468
                   3144: .L463:
                   3145:        sarl    $2, %eax
                   3146:        movl    $4, %ebx
                   3147:        movl    %eax, 8(%esp)
                   3148:        leal    -40(%ebp), %eax
                   3149:        movl    %ebx, 4(%esp)
                   3150:        movl    %eax, (%esp)
                   3151:        call    DrawPoly
                   3152:        addl    $48, %esp
                   3153:        popl    %ebx
                   3154:        popl    %esi
                   3155:        popl    %ebp
                   3156:        ret
                   3157: .L468:
                   3158:        addl    $3, %eax
                   3159:        jmp     .L463
                   3160: .L467:
                   3161:        cmpl    $-1, %ebx
                   3162:        je      .L449
                   3163:        flds    -36(%ebp,%ebx,8)
                   3164:        fsub    %st(1), %st
                   3165:        fstps   -36(%ebp,%ebx,8)
                   3166:        flds    -36(%ebp,%edx,8)
                   3167:        fsubp   %st, %st(1)
                   3168:        fstps   -36(%ebp,%edx,8)
                   3169:        jmp     .L448
                   3170:        .size   Call_DrawQuad, .-Call_DrawQuad
                   3171:        .p2align 4,,15
                   3172: .globl Call_DrawTriangle
                   3173:        .type   Call_DrawTriangle, @function
                   3174: Call_DrawTriangle:
                   3175:        pushl   %ebp
                   3176:        movl    %esp, %ebp
                   3177:        pushl   %edi
                   3178:        pushl   %esi
                   3179:        pushl   %ebx
                   3180:        subl    $44, %esp
                   3181:        movl    $8, (%esp)
                   3182:        call    GetReg
                   3183:        cwtl
                   3184:        testl   %eax, %eax
                   3185:        js      .L471
                   3186: .L470:
                   3187:        movl    $5, (%esp)
                   3188:        sarl    $2, %eax
                   3189:        movl    %eax, -16(%ebp)
                   3190:        call    GetReg
                   3191:        movl    $4, (%esp)
                   3192:        cwtl
                   3193:        movl    %eax, -20(%ebp)
                   3194:        call    GetReg
                   3195:        movl    $3, (%esp)
                   3196:        cwtl
                   3197:        movl    %eax, -24(%ebp)
                   3198:        call    GetReg
                   3199:        movl    $2, (%esp)
                   3200:        movswl  %ax,%ebx
                   3201:        call    GetReg
                   3202:        movl    $1, (%esp)
                   3203:        movswl  %ax,%edi
                   3204:        call    GetReg
                   3205:        movl    $0, (%esp)
                   3206:        movswl  %ax,%esi
                   3207:        call    GetReg
                   3208:        movl    %ebx, 12(%esp)
                   3209:        movl    -16(%ebp), %edx
                   3210:        cwtl
                   3211:        movl    %edi, 8(%esp)
                   3212:        movl    %esi, 4(%esp)
                   3213:        movl    %edx, 24(%esp)
                   3214:        movl    -20(%ebp), %edx
                   3215:        movl    %eax, (%esp)
                   3216:        movl    %edx, 20(%esp)
                   3217:        movl    -24(%ebp), %edx
                   3218:        movl    %edx, 16(%esp)
                   3219:        call    DrawTriangle
                   3220:        addl    $44, %esp
                   3221:        popl    %ebx
                   3222:        popl    %esi
                   3223:        popl    %edi
                   3224:        popl    %ebp
                   3225:        ret
                   3226:        .p2align 4,,7
                   3227: .L471:
                   3228:        addl    $3, %eax
                   3229:        jmp     .L470
                   3230:        .size   Call_DrawTriangle, .-Call_DrawTriangle
                   3231:        .p2align 4,,15
                   3232: .globl Call_HostUpdate
                   3233:        .type   Call_HostUpdate, @function
                   3234: Call_HostUpdate:
                   3235:        pushl   %ebp
                   3236:        movl    %esp, %ebp
                   3237:        subl    $8, %esp
                   3238:        call    Keymap_DebounceAllKeys
                   3239:        call    ShortCut_CheckKeys
                   3240:        movl    %ebp, %esp
                   3241:        popl    %ebp
                   3242:        jmp     Main_EventHandler
                   3243:        .size   Call_HostUpdate, .-Call_HostUpdate
                   3244:        .p2align 4,,15
                   3245:        .type   SetExceptionHandler, @function
                   3246: SetExceptionHandler:
                   3247:        pushl   %ebp
                   3248:        movl    %esp, %ebp
                   3249:        subl    $8, %esp
                   3250:        movl    $0, (%esp)
                   3251:        movl    %ebx, -4(%ebp)
                   3252:        call    GetReg
                   3253:        movl    $8, (%esp)
                   3254:        movl    %eax, %ebx
                   3255:        andl    $31, %ebx
                   3256:        call    GetReg
                   3257:        movl    %eax, exception_handlers(,%ebx,4)
                   3258:        movl    -4(%ebp), %ebx
                   3259:        movl    %ebp, %esp
                   3260:        popl    %ebp
                   3261:        ret
                   3262:        .size   SetExceptionHandler, .-SetExceptionHandler
                   3263:        .section        .rodata.str1.32,"aMS",@progbits,1
                   3264:        .align 32
                   3265: .LC16:
                   3266:        .string " $%x $%x $%x $%x $%x $%x $%x $%x*$%x $%x $%x $%x $%x $%x $%x $%x:%d\n"
                   3267:        .text
                   3268:        .p2align 4,,15
                   3269: .globl DumpMess
                   3270:        .type   DumpMess, @function
                   3271: DumpMess:
                   3272:        pushl   %ebp
                   3273:        movl    %esp, %ebp
                   3274:        pushl   %edi
                   3275:        pushl   %esi
                   3276:        pushl   %ebx
                   3277:        subl    $124, %esp
                   3278:        cmpb    $0, X
                   3279:        jne     .L485
                   3280: .L475:
                   3281:        cmpb    $0, Z
                   3282:        jne     .L486
                   3283: .L477:
                   3284:        cmpb    $0, N
                   3285:        jne     .L487
                   3286: .L479:
                   3287:        cmpb    $0, V
                   3288:        jne     .L488
                   3289: .L481:
                   3290:        cmpb    $0, C
                   3291:        jne     .L489
                   3292: .L483:
                   3293:        movl    $15, (%esp)
                   3294:        call    GetReg
                   3295:        movl    %eax, -16(%ebp)
                   3296:        movl    $14, (%esp)
                   3297:        call    GetReg
                   3298:        movl    %eax, -20(%ebp)
                   3299:        movl    $13, (%esp)
                   3300:        call    GetReg
                   3301:        movl    %eax, -24(%ebp)
                   3302:        movl    $12, (%esp)
                   3303:        call    GetReg
                   3304:        movl    %eax, -28(%ebp)
                   3305:        movl    $11, (%esp)
                   3306:        call    GetReg
                   3307:        movl    %eax, -32(%ebp)
                   3308:        movl    $10, (%esp)
                   3309:        call    GetReg
                   3310:        movl    %eax, -36(%ebp)
                   3311:        movl    $9, (%esp)
                   3312:        call    GetReg
                   3313:        movl    %eax, -40(%ebp)
                   3314:        movl    $8, (%esp)
                   3315:        call    GetReg
                   3316:        movl    %eax, -44(%ebp)
                   3317:        movl    $7, (%esp)
                   3318:        call    GetReg
                   3319:        movl    %eax, -48(%ebp)
                   3320:        movl    $6, (%esp)
                   3321:        call    GetReg
                   3322:        movl    %eax, -52(%ebp)
                   3323:        movl    $5, (%esp)
                   3324:        call    GetReg
                   3325:        movl    %eax, -56(%ebp)
                   3326:        movl    $4, (%esp)
                   3327:        call    GetReg
                   3328:        movl    %eax, -60(%ebp)
                   3329:        movl    $3, (%esp)
                   3330:        call    GetReg
                   3331:        movl    $2, (%esp)
                   3332:        movl    %eax, %edi
                   3333:        call    GetReg
                   3334:        movl    $1, (%esp)
                   3335:        movl    %eax, %esi
                   3336:        call    GetReg
                   3337:        movl    $0, (%esp)
                   3338:        movl    %eax, %ebx
                   3339:        call    GetReg
                   3340:        movl    %eax, 4(%esp)
                   3341:        movl    line_no, %edx
                   3342:        movl    %edi, 16(%esp)
                   3343:        movl    %esi, 12(%esp)
                   3344:        movl    %edx, 68(%esp)
                   3345:        movl    -16(%ebp), %edx
                   3346:        movl    %ebx, 8(%esp)
                   3347:        movl    $.LC16, (%esp)
                   3348:        movl    %edx, 64(%esp)
                   3349:        movl    -20(%ebp), %edx
                   3350:        movl    %edx, 60(%esp)
                   3351:        movl    -24(%ebp), %edx
                   3352:        movl    %edx, 56(%esp)
                   3353:        movl    -28(%ebp), %edx
                   3354:        movl    %edx, 52(%esp)
                   3355:        movl    -32(%ebp), %edx
                   3356:        movl    %edx, 48(%esp)
                   3357:        movl    -36(%ebp), %edx
                   3358:        movl    %edx, 44(%esp)
                   3359:        movl    -40(%ebp), %edx
                   3360:        movl    %edx, 40(%esp)
                   3361:        movl    -44(%ebp), %edx
                   3362:        movl    %edx, 36(%esp)
                   3363:        movl    -48(%ebp), %edx
                   3364:        movl    %edx, 32(%esp)
                   3365:        movl    -52(%ebp), %edx
                   3366:        movl    %edx, 28(%esp)
                   3367:        movl    -56(%ebp), %edx
                   3368:        movl    %edx, 24(%esp)
                   3369:        movl    -60(%ebp), %edx
                   3370:        movl    %edx, 20(%esp)
                   3371:        call    printf
                   3372:        addl    $124, %esp
                   3373:        popl    %ebx
                   3374:        popl    %esi
                   3375:        popl    %edi
                   3376:        popl    %ebp
                   3377:        ret
                   3378:        .p2align 4,,7
                   3379: .L489:
                   3380:        movl    $67, (%esp)
                   3381:        movl    stdout, %eax
                   3382:        movl    %eax, 4(%esp)
                   3383:        call    _IO_putc
                   3384:        jmp     .L483
                   3385:        .p2align 4,,7
                   3386: .L488:
                   3387:        movl    $86, (%esp)
                   3388:        movl    stdout, %eax
                   3389:        movl    %eax, 4(%esp)
                   3390:        call    _IO_putc
                   3391:        jmp     .L481
                   3392:        .p2align 4,,7
                   3393: .L487:
                   3394:        movl    $78, (%esp)
                   3395:        movl    stdout, %eax
                   3396:        movl    %eax, 4(%esp)
                   3397:        call    _IO_putc
                   3398:        jmp     .L479
                   3399:        .p2align 4,,7
                   3400: .L486:
                   3401:        movl    $90, (%esp)
                   3402:        movl    stdout, %eax
                   3403:        movl    %eax, 4(%esp)
                   3404:        call    _IO_putc
                   3405:        jmp     .L477
                   3406:        .p2align 4,,7
                   3407: .L485:
                   3408:        movl    $88, (%esp)
                   3409:        movl    stdout, %eax
                   3410:        movl    %eax, 4(%esp)
                   3411:        call    _IO_putc
                   3412:        jmp     .L475
                   3413:        .size   DumpMess, .-DumpMess
                   3414:        .local  PrevRegs.0
                   3415:        .comm   PrevRegs.0,64,32
                   3416:        .section        .rodata.str1.1
                   3417: .LC17:
                   3418:        .string " %c%d:%x"
                   3419: .LC18:
                   3420:        .string "(%d)\n"
                   3421:        .text
                   3422:        .p2align 4,,15
                   3423: .globl DumpRegsChanged
                   3424:        .type   DumpRegsChanged, @function
                   3425: DumpRegsChanged:
                   3426:        pushl   %ebp
                   3427:        movl    %esp, %ebp
                   3428:        pushl   %esi
                   3429:        xorl    %esi, %esi
                   3430:        pushl   %ebx
                   3431:        subl    $16, %esp
                   3432:        xorl    %ebx, %ebx
                   3433:        .p2align 4,,15
                   3434: .L510:
                   3435:        movl    %ebx, (%esp)
                   3436:        call    GetReg
                   3437:        cmpl    %eax, PrevRegs.0(,%ebx,4)
                   3438:        je      .L493
                   3439:        testl   %esi, %esi
                   3440:        jne     .L496
                   3441:        cmpb    $0, Z
                   3442:        jne     .L514
                   3443: .L497:
                   3444:        cmpb    $0, V
                   3445:        jne     .L515
                   3446: .L499:
                   3447:        cmpb    $0, C
                   3448:        jne     .L516
                   3449: .L501:
                   3450:        cmpb    $0, N
                   3451:        jne     .L517
                   3452: .L503:
                   3453:        cmpb    $0, X
                   3454:        jne     .L518
                   3455: .L505:
                   3456:        movl    $1, %esi
                   3457: .L496:
                   3458:        movl    %ebx, (%esp)
                   3459:        call    GetReg
                   3460:        movl    %eax, 12(%esp)
                   3461:        cmpl    $7, %ebx
                   3462:        movl    %ebx, %eax
                   3463:        jle     .L507
                   3464:        leal    -8(%ebx), %eax
                   3465: .L507:
                   3466:        movl    %eax, 8(%esp)
                   3467:        xorl    %eax, %eax
                   3468:        cmpl    $7, %ebx
                   3469:        setle   %al
                   3470:        movl    $.LC17, (%esp)
                   3471:        leal    97(%eax,%eax,2), %eax
                   3472:        movl    %eax, 4(%esp)
                   3473:        call    printf
                   3474:        movl    %ebx, (%esp)
                   3475:        call    GetReg
                   3476:        movl    %eax, PrevRegs.0(,%ebx,4)
                   3477: .L493:
                   3478:        incl    %ebx
                   3479:        cmpl    $15, %ebx
                   3480:        jle     .L510
                   3481:        testl   %esi, %esi
                   3482:        jne     .L519
                   3483: .L490:
                   3484:        addl    $16, %esp
                   3485:        popl    %ebx
                   3486:        popl    %esi
                   3487:        popl    %ebp
                   3488:        ret
                   3489: .L519:
                   3490:        movl    $.LC18, (%esp)
                   3491:        movl    line_no, %eax
                   3492:        movl    %eax, 4(%esp)
                   3493:        call    printf
                   3494:        jmp     .L490
                   3495:        .p2align 4,,7
                   3496: .L518:
                   3497:        movl    $88, (%esp)
                   3498:        movl    stdout, %eax
                   3499:        movl    %eax, 4(%esp)
                   3500:        call    _IO_putc
                   3501:        jmp     .L505
                   3502:        .p2align 4,,7
                   3503: .L517:
                   3504:        movl    $78, (%esp)
                   3505:        movl    stdout, %eax
                   3506:        movl    %eax, 4(%esp)
                   3507:        call    _IO_putc
                   3508:        jmp     .L503
                   3509:        .p2align 4,,7
                   3510: .L516:
                   3511:        movl    $67, (%esp)
                   3512:        movl    stdout, %eax
                   3513:        movl    %eax, 4(%esp)
                   3514:        call    _IO_putc
                   3515:        jmp     .L501
                   3516:        .p2align 4,,7
                   3517: .L515:
                   3518:        movl    $86, (%esp)
                   3519:        movl    stdout, %eax
                   3520:        movl    %eax, 4(%esp)
                   3521:        call    _IO_putc
                   3522:        jmp     .L499
                   3523:        .p2align 4,,7
                   3524: .L514:
                   3525:        movl    $90, (%esp)
                   3526:        movl    stdout, %eax
                   3527:        movl    %eax, 4(%esp)
                   3528:        call    _IO_putc
                   3529:        jmp     .L497
                   3530:        .size   DumpRegsChanged, .-DumpRegsChanged
                   3531: .globl hcalls
                   3532:        .data
                   3533:        .align 32
                   3534:        .type   hcalls, @object
                   3535:        .size   hcalls, 324
                   3536: hcalls:
                   3537:        .long   SetExceptionHandler
                   3538:        .long   Call_Memset
                   3539:        .long   Call_MemsetBlue
                   3540:        .long   Call_BlitCursor
                   3541:        .long   Call_RestoreUnderCursor
                   3542:        .long   Call_BlitBmp
                   3543:        .long   Call_OldHLine
                   3544:        .long   Call_HostUpdate
                   3545:        .long   Call_Memcpy
                   3546:        .long   Call_PutPix
                   3547:        .long   Call_BackHLine
                   3548:        .long   Call_FillLine
                   3549:        .long   Call_SetMainPalette
                   3550:        .long   Call_SetCtrlPalette
                   3551:        .long   Call_SetScreenBase
                   3552:        .long   Screen_Draw
                   3553:        .long   Call_DumpRegs
                   3554:        .long   Call_MakeExtPalette
                   3555:        .long   Call_PlaySFX
                   3556:        .long   Call_GetMouseInput
                   3557:        .long   Call_GetKeyboardEvent
                   3558:        .long   0
                   3559:        .long   Call_HLine
                   3560:        .long   Call_NotifyOfScrFlip
                   3561:        .long   Call_NotifyMousePos
                   3562:        .long   Call_InformScreens
                   3563:        .long   GemDOS_SetDTA
                   3564:        .long   Call_DrawStrShadowed
                   3565:        .long   Call_DrawStr
                   3566:        .long   Call_DrawTriangle
                   3567:        .long   Call_DrawQuad
                   3568:        .long   0
                   3569:        .long   0
                   3570:        .long   0
                   3571:        .long   0
                   3572:        .long   0
                   3573:        .long   0
                   3574:        .long   0
                   3575:        .long   0
                   3576:        .long   0
                   3577:        .long   0
                   3578:        .long   0
                   3579:        .long   0
                   3580:        .long   0
                   3581:        .long   0
                   3582:        .long   0
                   3583:        .long   0
                   3584:        .long   0
                   3585:        .long   0
                   3586:        .long   0
                   3587:        .long   0
                   3588:        .long   0
                   3589:        .long   0
                   3590:        .long   0
                   3591:        .long   0
                   3592:        .long   0
                   3593:        .long   0
                   3594:        .long   0
                   3595:        .long   0
                   3596:        .long   0
                   3597:        .long   GemDOS_Create
                   3598:        .long   GemDOS_Open
                   3599:        .long   GemDOS_Close
                   3600:        .long   GemDOS_Read
                   3601:        .long   GemDOS_Write
                   3602:        .long   GemDOS_UnLink
                   3603:        .long   0
                   3604:        .long   0
                   3605:        .long   0
                   3606:        .long   0
                   3607:        .long   0
                   3608:        .long   0
                   3609:        .long   0
                   3610:        .long   0
                   3611:        .long   0
                   3612:        .long   0
                   3613:        .long   0
                   3614:        .long   0
                   3615:        .long   GemDOS_SFirst
                   3616:        .long   GemDOS_SNext
                   3617:        .long   0
                   3618:        .comm   emudrive,516,32
                   3619:        .comm   FileHandles,8448,32
                   3620:        .comm   InternalDTAs,69632,32
                   3621:        .comm   DTAIndex,4,4
                   3622:        .comm   pDTA,4,4
                   3623:        .comm   under_mouse,256,32
                   3624:        .comm   len_working_ext_pal,4,4
                   3625:        .comm   working_ext_pal,480,32
                   3626:        .section        .note.GNU-stack,"",@progbits
                   3627:        .ident  "GCC: (GNU) 3.3.5 (Debian 1:3.3.5-8)"

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.