1
0
Fork 0
mirror of https://github.com/galaxyhaxz/devilution synced 2025-02-22 12:34:59 +00:00
devilution/2020_03_31/Source/_render.cpp
PrisonOfMirrors b720183846 initial up
2020-11-28 18:24:54 -06:00

10251 lines
161 KiB
C++

__declspec(naked) void drawTopArchesUpperScreen(BYTE *pBuff)
{
__asm {
push ebx
push edx
push edi
push esi
mov edi, offset SpeedFrameTbl
mov gpCelFrame, edi
mov edi, ecx
mov eax, light_table_index
test al, al
jz loc_46316A
cmp al, lightmax
jz loc_4631CA
mov eax, level_cel_block
and eax, 8000h
jnz loc_4630FE
mov ebx, pDungeonCels
mov esi, ebx
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 2
add ebx, eax
add esi, [ebx]
mov ebx, light_table_index
shl ebx, 8
add ebx, pLightTbl
mov eax, level_cel_block
mov al, ah
shr eax, 4
and eax, 0Fh
jz loc_463255
cmp ax, 1
jz loc_4632C5
cmp ax, 2
jz loc_463425
cmp ax, 3
jz loc_463698
cmp ax, 4
jz loc_46390B
jmp loc_463AB3
loc_4630FE:
mov esi, gpCelFrame
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 4
add eax, light_table_index
shl eax, 2
add esi, eax
mov eax, [esi]
mov esi, pSpeedCels
add esi, eax
mov eax, level_cel_block
mov al, ah
shr eax, 4
and eax, 0Fh
loc_463133:
cmp ax, 8
jz loc_463C5B
cmp ax, 9
jz loc_463CC2
cmp ax, 0Ah
jz loc_463DA3
cmp ax, 0Bh
jz loc_463ED8
cmp ax, 0Ch
jz loc_464011
jmp loc_464112
loc_46316A:
mov eax, level_cel_block
and eax, 8000h
jz loc_46319C
mov esi, gpCelFrame
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 6
add esi, eax
mov eax, level_cel_block
and eax, 0F000h
add eax, [esi]
mov level_cel_block, eax
loc_46319C:
mov ebx, pDungeonCels
mov esi, ebx
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 2
add ebx, eax
add esi, [ebx]
mov eax, level_cel_block
mov al, ah
shr eax, 4
and eax, 7
add eax, 8
jmp loc_463133
loc_4631CA:
mov eax, level_cel_block
and eax, 8000h
jz loc_4631FC
mov esi, gpCelFrame
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 6
add esi, eax
mov eax, level_cel_block
and eax, 0F000h
add eax, [esi]
mov level_cel_block, eax
loc_4631FC:
mov ebx, pDungeonCels
mov esi, ebx
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 2
add ebx, eax
add esi, [ebx]
mov eax, level_cel_block
mov al, ah
shr eax, 4
and eax, 7
jz loc_46420F
cmp ax, 1
jz loc_464263
cmp ax, 2
jz loc_464321
cmp ax, 3
jz loc_46440E
cmp ax, 4
jz loc_4644FB
jmp loc_4645C7
loc_463255:
push ebp
mov ebp, 10h
loc_46325B:
cmp edi, gpBufEnd
jb loc_4632BF
mov ecx, 8
loc_463268:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_463268
sub edi, 320h
cmp edi, gpBufEnd
jb loc_4632BF
mov ecx, 8
loc_463299:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_463299
sub edi, 320h
dec ebp
jnz loc_46325B
loc_4632BF:
pop ebp
jmp loc_464688
loc_4632C5:
push ebp
mov eax, edi
and eax, 1
mov WorldBoolFlag, eax
mov ebp, 20h
loc_4632D5:
mov edx, 20h
loc_4632DA:
xor eax, eax
mov al, [esi]
inc esi
test al, al
js loc_4633F8
sub edx, eax
cmp edi, gpBufEnd
jb loc_46341F
mov ecx, eax
mov eax, edi
and eax, 1
cmp eax, WorldBoolFlag
jnz loc_463377
push edx
shr ecx, 1
jb loc_463340
shr ecx, 1
jnb loc_46331C
mov dl, [esi+1]
mov dl, [ebx+edx]
add esi, 2
mov [edi+1], dl
add edi, 2
loc_46331C:
test cl, cl
jz loc_46333E
loc_463320:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_463320
loc_46333E:
jmp loc_463374
loc_463340:
inc esi
inc edi
shr ecx, 1
jnb loc_463353
mov dl, [esi]
mov dl, [ebx+edx]
add esi, 2
mov [edi], dl
add edi, 2
loc_463353:
test cl, cl
jz loc_463374
loc_463357:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_463357
loc_463374:
pop edx
jmp loc_4633EF
loc_463377:
push edx
shr ecx, 1
jb loc_4633B0
shr ecx, 1
jnb loc_46338D
mov dl, [esi]
mov dl, [ebx+edx]
add esi, 2
mov [edi], dl
add edi, 2
loc_46338D:
test cl, cl
jz loc_4633AE
loc_463391:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_463391
loc_4633AE:
jmp loc_4633EE
loc_4633B0:
mov dl, [esi]
mov dl, [ebx+edx]
inc esi
mov [edi], dl
inc edi
shr ecx, 1
jnb loc_4633CC
mov dl, [esi+1]
mov dl, [ebx+edx]
add esi, 2
mov [edi+1], dl
add edi, 2
loc_4633CC:
test cl, cl
jz loc_4633EE
loc_4633D0:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_4633D0
loc_4633EE:
pop edx
loc_4633EF:
test edx, edx
jz loc_463404
jmp loc_4632DA
loc_4633F8:
neg al
add edi, eax
sub edx, eax
jnz loc_4632DA
loc_463404:
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
sub edi, 320h
dec ebp
jnz loc_4632D5
loc_46341F:
pop ebp
jmp loc_464688
loc_463425:
push ebp
xor eax, eax
mov WorldBoolFlag, eax
mov ebp, 1Eh
loc_463432:
cmp edi, gpBufEnd
jb loc_463692
add edi, ebp
mov ecx, 20h
sub ecx, ebp
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
jz loc_4634D2
mov edx, ecx
and edx, 2
add esi, edx
shr ecx, 1
jb loc_463499
shr ecx, 1
jnb loc_463475
mov dl, [esi+1]
mov dl, [ebx+edx]
add esi, 2
mov [edi+1], dl
add edi, 2
loc_463475:
test cl, cl
jz loc_463497
loc_463479:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_463479
loc_463497:
jmp loc_4634CD
loc_463499:
inc esi
inc edi
shr ecx, 1
jnb loc_4634AC
mov dl, [esi]
mov dl, [ebx+edx]
add esi, 2
mov [edi], dl
add edi, 2
loc_4634AC:
test cl, cl
jz loc_4634CD
loc_4634B0:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_4634B0
loc_4634CD:
jmp $+82h
loc_4634D2:
mov edx, ecx
and edx, 2
add esi, edx
shr ecx, 1
jb loc_463511
shr ecx, 1
jnb loc_4634EE
mov dl, [esi]
mov dl, [ebx+edx]
add esi, 2
mov [edi], dl
add edi, 2
loc_4634EE:
test cl, cl
jz loc_46350F
loc_4634F2:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_4634F2
loc_46350F:
jmp loc_46354F
loc_463511:
mov dl, [esi]
mov dl, [ebx+edx]
inc esi
mov [edi], dl
inc edi
shr ecx, 1
jnb loc_46352D
mov dl, [esi+1]
mov dl, [ebx+edx]
add esi, 2
mov [edi+1], dl
add edi, 2
loc_46352D:
test cl, cl
jz loc_46354F
loc_463531:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_463531
loc_46354F:
sub edi, 320h
sub ebp, 2
jge loc_463432
mov ebp, 2
loc_463563:
cmp edi, gpBufEnd
jb loc_463692
add edi, ebp
mov ecx, 20h
sub ecx, ebp
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
jz loc_463603
mov edx, ecx
and edx, 2
add esi, edx
shr ecx, 1
jb loc_4635CA
shr ecx, 1
jnb loc_4635A6
mov dl, [esi+1]
mov dl, [ebx+edx]
add esi, 2
mov [edi+1], dl
add edi, 2
loc_4635A6:
test cl, cl
jz loc_4635C8
loc_4635AA:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_4635AA
loc_4635C8:
jmp loc_4635FE
loc_4635CA:
inc esi
inc edi
shr ecx, 1
jnb loc_4635DD
mov dl, [esi]
mov dl, [ebx+edx]
add esi, 2
mov [edi], dl
add edi, 2
loc_4635DD:
test cl, cl
jz loc_4635FE
loc_4635E1:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_4635E1
loc_4635FE:
jmp $+82h
loc_463603:
mov edx, ecx
and edx, 2
add esi, edx
shr ecx, 1
jb loc_463642
shr ecx, 1
jnb loc_46361F
mov dl, [esi]
mov dl, [ebx+edx]
add esi, 2
mov [edi], dl
add edi, 2
loc_46361F:
test cl, cl
jz loc_463640
loc_463623:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_463623
loc_463640:
jmp loc_463680
loc_463642:
mov dl, [esi]
mov dl, [ebx+edx]
inc esi
mov [edi], dl
inc edi
shr ecx, 1
jnb loc_46365E
mov dl, [esi+1]
mov dl, [ebx+edx]
add esi, 2
mov [edi+1], dl
add edi, 2
loc_46365E:
test cl, cl
jz loc_463680
loc_463662:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_463662
loc_463680:
sub edi, 320h
add ebp, 2
cmp ebp, 20h
jnz loc_463563
loc_463692:
pop ebp
jmp loc_464688
loc_463698:
push ebp
xor eax, eax
mov WorldBoolFlag, eax
mov ebp, 1Eh
loc_4636A5:
cmp edi, gpBufEnd
jb loc_463905
mov ecx, 20h
sub ecx, ebp
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
jz loc_463743
shr ecx, 1
jb loc_463703
shr ecx, 1
jnb loc_4636DF
mov dl, [esi+1]
mov dl, [ebx+edx]
add esi, 2
mov [edi+1], dl
add edi, 2
loc_4636DF:
test cl, cl
jz loc_463701
loc_4636E3:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_4636E3
loc_463701:
jmp loc_463737
loc_463703:
inc esi
inc edi
shr ecx, 1
jnb loc_463716
mov dl, [esi]
mov dl, [ebx+edx]
add esi, 2
mov [edi], dl
add edi, 2
loc_463716:
test cl, cl
jz loc_463737
loc_46371A:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_46371A
loc_463737:
mov edx, esi
and edx, 2
add esi, edx
jmp $+82h
loc_463743:
shr ecx, 1
jb loc_46377B
shr ecx, 1
jnb loc_463758
mov dl, [esi]
mov dl, [ebx+edx]
add esi, 2
mov [edi], dl
add edi, 2
loc_463758:
test cl, cl
jz loc_463779
loc_46375C:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_46375C
loc_463779:
jmp loc_4637B9
loc_46377B:
mov dl, [esi]
mov dl, [ebx+edx]
inc esi
mov [edi], dl
inc edi
shr ecx, 1
jnb loc_463797
mov dl, [esi+1]
mov dl, [ebx+edx]
add esi, 2
mov [edi+1], dl
add edi, 2
loc_463797:
test cl, cl
jz loc_4637B9
loc_46379B:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_46379B
loc_4637B9:
mov edx, esi
and edx, 2
add esi, edx
// loc_4637C0:
sub edi, 320h
add edi, ebp
sub ebp, 2
jge loc_4636A5
mov ebp, 2
loc_4637D6:
cmp edi, gpBufEnd
jb loc_463905
mov ecx, 20h
sub ecx, ebp
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
jz loc_463874
shr ecx, 1
jb loc_463834
shr ecx, 1
jnb loc_463810
mov dl, [esi+1]
mov dl, [ebx+edx]
add esi, 2
mov [edi+1], dl
add edi, 2
loc_463810:
test cl, cl
jz loc_463832
loc_463814:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_463814
loc_463832:
jmp loc_463868
loc_463834:
inc esi
inc edi
shr ecx, 1
jnb loc_463847
mov dl, [esi]
mov dl, [ebx+edx]
add esi, 2
mov [edi], dl
add edi, 2
loc_463847:
test cl, cl
jz loc_463868
loc_46384B:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_46384B
loc_463868:
mov edx, esi
and edx, 2
add esi, edx
jmp $+82h
loc_463874:
shr ecx, 1
jb loc_4638AC
shr ecx, 1
jnb loc_463889
mov dl, [esi]
mov dl, [ebx+edx]
add esi, 2
mov [edi], dl
add edi, 2
loc_463889:
test cl, cl
jz loc_4638AA
loc_46388D:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_46388D
loc_4638AA:
jmp loc_4638EA
loc_4638AC:
mov dl, [esi]
mov dl, [ebx+edx]
inc esi
mov [edi], dl
inc edi
shr ecx, 1
jnb loc_4638C8
mov dl, [esi+1]
mov dl, [ebx+edx]
add esi, 2
mov [edi+1], dl
add edi, 2
loc_4638C8:
test cl, cl
jz loc_4638EA
loc_4638CC:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_4638CC
loc_4638EA:
mov edx, esi
and edx, 2
add esi, edx
// loc_4638F1:
sub edi, 320h
add edi, ebp
add ebp, 2
cmp ebp, 20h
jnz loc_4637D6
loc_463905:
pop ebp
jmp loc_464688
loc_46390B:
push ebp
xor eax, eax
mov WorldBoolFlag, eax
mov ebp, 1Eh
loc_463918:
cmp edi, gpBufEnd
jb loc_463AAD
add edi, ebp
mov ecx, 20h
sub ecx, ebp
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
jz loc_4639B8
mov edx, ecx
and edx, 2
add esi, edx
shr ecx, 1
jb loc_46397F
shr ecx, 1
jnb loc_46395B
mov dl, [esi+1]
mov dl, [ebx+edx]
add esi, 2
mov [edi+1], dl
add edi, 2
loc_46395B:
test cl, cl
jz loc_46397D
loc_46395F:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_46395F
loc_46397D:
jmp loc_4639B3
loc_46397F:
inc esi
inc edi
shr ecx, 1
jnb loc_463992
mov dl, [esi]
mov dl, [ebx+edx]
add esi, 2
mov [edi], dl
add edi, 2
loc_463992:
test cl, cl
jz loc_4639B3
loc_463996:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_463996
loc_4639B3:
jmp $+82h
loc_4639B8:
mov edx, ecx
and edx, 2
add esi, edx
shr ecx, 1
jb loc_4639F7
shr ecx, 1
jnb loc_4639D4
mov dl, [esi]
mov dl, [ebx+edx]
add esi, 2
mov [edi], dl
add edi, 2
loc_4639D4:
test cl, cl
jz loc_4639F5
loc_4639D8:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_4639D8
loc_4639F5:
jmp loc_463A35
loc_4639F7:
mov dl, [esi]
mov dl, [ebx+edx]
inc esi
mov [edi], dl
inc edi
shr ecx, 1
jnb loc_463A13
mov dl, [esi+1]
mov dl, [ebx+edx]
add esi, 2
mov [edi+1], dl
add edi, 2
loc_463A13:
test cl, cl
jz loc_463A35
loc_463A17:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_463A17
loc_463A35:
sub edi, 320h
sub ebp, 2
jge loc_463918
mov ebp, 8
loc_463A49:
cmp edi, gpBufEnd
jb loc_463AAD
mov ecx, 8
loc_463A56:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_463A56
sub edi, 320h
cmp edi, gpBufEnd
jb loc_463AAD
mov ecx, 8
loc_463A87:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_463A87
sub edi, 320h
dec ebp
jnz loc_463A49
loc_463AAD:
pop ebp
jmp loc_464688
loc_463AB3:
push ebp
xor eax, eax
mov WorldBoolFlag, eax
mov ebp, 1Eh
loc_463AC0:
cmp edi, gpBufEnd
jb loc_463C55
mov ecx, 20h
sub ecx, ebp
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
jz loc_463B5E
shr ecx, 1
jb loc_463B1E
shr ecx, 1
jnb loc_463AFA
mov dl, [esi+1]
mov dl, [ebx+edx]
add esi, 2
mov [edi+1], dl
add edi, 2
loc_463AFA:
test cl, cl
jz loc_463B1C
loc_463AFE:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_463AFE
loc_463B1C:
jmp loc_463B52
loc_463B1E:
inc esi
inc edi
shr ecx, 1
jnb loc_463B31
mov dl, [esi]
mov dl, [ebx+edx]
add esi, 2
mov [edi], dl
add edi, 2
loc_463B31:
test cl, cl
jz loc_463B52
loc_463B35:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_463B35
loc_463B52:
mov edx, esi
and edx, 2
add esi, edx
jmp $+82h
loc_463B5E:
shr ecx, 1
jb loc_463B96
shr ecx, 1
jnb loc_463B73
mov dl, [esi]
mov dl, [ebx+edx]
add esi, 2
mov [edi], dl
add edi, 2
loc_463B73:
test cl, cl
jz loc_463B94
loc_463B77:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_463B77
loc_463B94:
jmp loc_463BD4
loc_463B96:
mov dl, [esi]
mov dl, [ebx+edx]
inc esi
mov [edi], dl
inc edi
shr ecx, 1
jnb loc_463BB2
mov dl, [esi+1]
mov dl, [ebx+edx]
add esi, 2
mov [edi+1], dl
add edi, 2
loc_463BB2:
test cl, cl
jz loc_463BD4
loc_463BB6:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_463BB6
loc_463BD4:
mov edx, esi
and edx, 2
add esi, edx
// loc_463BDB:
sub edi, 320h
add edi, ebp
sub ebp, 2
jge loc_463AC0
mov ebp, 8
loc_463BF1:
cmp edi, gpBufEnd
jb loc_463C55
mov ecx, 8
loc_463BFE:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_463BFE
sub edi, 320h
cmp edi, gpBufEnd
jb loc_463C55
mov ecx, 8
loc_463C2F:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_463C2F
sub edi, 320h
dec ebp
jnz loc_463BF1
loc_463C55:
pop ebp
jmp loc_464688
loc_463C5B:
mov edx, 10h
loc_463C60:
cmp edi, gpBufEnd
jb loc_464688
mov ecx, 8
loc_463C71:
mov eax, [esi]
add esi, 4
inc edi
ror eax, 8
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
inc edi
dec ecx
jnz loc_463C71
sub edi, 320h
cmp edi, gpBufEnd
jb loc_464688
mov ecx, 8
loc_463C9F:
mov eax, [esi]
add esi, 4
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
add edi, 2
dec ecx
jnz loc_463C9F
sub edi, 320h
dec edx
jnz loc_463C60
jmp loc_464688
loc_463CC2:
push ebp
mov eax, edi
and eax, 1
mov WorldBoolFlag, eax
mov ebp, 20h
loc_463CD2:
mov edx, 20h
loc_463CD7:
xor eax, eax
mov al, [esi]
inc esi
test al, al
js loc_463D76
sub edx, eax
cmp edi, gpBufEnd
jb loc_463D9D
mov ecx, eax
mov eax, edi
and eax, 1
cmp eax, WorldBoolFlag
jnz loc_463D36
shr ecx, 1
jnb loc_463D0D
inc esi
inc edi
test ecx, ecx
jz loc_463D6D
jmp loc_463D46
loc_463D0D:
shr ecx, 1
jnb loc_463D1D
inc esi
inc edi
mov al, [esi]
inc esi
mov [edi], al
inc edi
test ecx, ecx
jz loc_463D6D
loc_463D1D:
mov eax, [esi]
add esi, 4
inc edi
ror eax, 8
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
inc edi
dec ecx
jnz loc_463D1D
jmp loc_463D6D
loc_463D36:
shr ecx, 1
jnb loc_463D46
mov al, [esi]
inc esi
mov [edi], al
inc edi
test ecx, ecx
jz loc_463D6D
jmp loc_463D0D
loc_463D46:
shr ecx, 1
jnb loc_463D58
mov al, [esi]
add esi, 2
mov [edi], al
add edi, 2
test ecx, ecx
jz loc_463D6D
loc_463D58:
mov eax, [esi]
add esi, 4
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
add edi, 2
dec ecx
jnz loc_463D58
loc_463D6D:
test edx, edx
jz loc_463D82
jmp loc_463CD7
loc_463D76:
neg al
add edi, eax
sub edx, eax
jnz loc_463CD7
loc_463D82:
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
sub edi, 320h
dec ebp
jnz loc_463CD2
loc_463D9D:
pop ebp
jmp loc_464688
loc_463DA3:
xor eax, eax
mov WorldBoolFlag, eax
mov edx, 1Eh
loc_463DAF:
cmp edi, gpBufEnd
jb loc_464688
add edi, edx
mov ecx, 20h
sub ecx, edx
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
jz loc_463E04
shr ecx, 2
jnb loc_463DEB
mov ax, [esi+2]
add esi, 4
inc edi
ror eax, 8
mov [edi], al
inc edi
test ecx, ecx
jz loc_463E2E
loc_463DEB:
mov eax, [esi]
add esi, 4
inc edi
ror eax, 8
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
inc edi
dec ecx
jnz loc_463DEB
jmp loc_463E2E
loc_463E04:
shr ecx, 2
jnb loc_463E19
mov ax, [esi+2]
add esi, 4
mov [edi], al
add edi, 2
test ecx, ecx
jz loc_463E2E
loc_463E19:
mov eax, [esi]
add esi, 4
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
add edi, 2
dec ecx
jnz loc_463E19
loc_463E2E:
sub edi, 320h
sub edx, 2
jge loc_463DAF
mov edx, 2
loc_463E42:
cmp edi, gpBufEnd
jb loc_464688
add edi, edx
mov ecx, 20h
sub ecx, edx
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
jz loc_463E97
shr ecx, 2
jnb loc_463E7E
mov ax, [esi+2]
add esi, 4
inc edi
ror eax, 8
mov [edi], al
inc edi
test ecx, ecx
jz loc_463EC1
loc_463E7E:
mov eax, [esi]
add esi, 4
inc edi
ror eax, 8
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
inc edi
dec ecx
jnz loc_463E7E
jmp loc_463EC1
loc_463E97:
shr ecx, 2
jnb loc_463EAC
mov ax, [esi+2]
add esi, 4
mov [edi], al
add edi, 2
test ecx, ecx
jz loc_463EC1
loc_463EAC:
mov eax, [esi]
add esi, 4
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
add edi, 2
dec ecx
jnz loc_463EAC
loc_463EC1:
sub edi, 320h
add edx, 2
cmp edx, 20h
jnz loc_463E42
jmp loc_464688
loc_463ED8:
push ebp
xor eax, eax
mov WorldBoolFlag, eax
mov edx, 1Eh
loc_463EE5:
cmp edi, gpBufEnd
jb loc_46400B
mov ecx, 20h
sub ecx, edx
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov ebp, ecx
mov WorldBoolFlag, eax
jz loc_463F3A
shr ecx, 2
jz loc_463F26
loc_463F0F:
mov eax, [esi]
add esi, 4
inc edi
ror eax, 8
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
inc edi
dec ecx
jnz loc_463F0F
loc_463F26:
and ebp, 2
jz loc_463F64
mov ax, [esi]
add esi, 4
inc edi
ror eax, 8
mov [edi], al
inc edi
jmp loc_463F64
loc_463F3A:
shr ecx, 2
jz loc_463F54
loc_463F3F:
mov eax, [esi]
add esi, 4
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
add edi, 2
dec ecx
jnz loc_463F3F
loc_463F54:
and ebp, 2
jz loc_463F64
mov ax, [esi]
add esi, 4
mov [edi], al
add edi, 2
loc_463F64:
sub edi, 320h
add edi, edx
sub edx, 2
jge loc_463EE5
mov edx, 2
loc_463F7A:
cmp edi, gpBufEnd
jb loc_46400B
mov ecx, 20h
sub ecx, edx
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
jz loc_463FCD
shr ecx, 2
jz loc_463FB9
loc_463FA2:
mov eax, [esi]
add esi, 4
inc edi
ror eax, 8
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
inc edi
dec ecx
jnz loc_463FA2
loc_463FB9:
and ebp, 2
jz loc_463FF7
mov ax, [esi]
add esi, 4
inc edi
ror eax, 8
mov [edi], al
inc edi
jmp loc_463FF7
loc_463FCD:
shr ecx, 2
jz loc_463FE7
loc_463FD2:
mov eax, [esi]
add esi, 4
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
add edi, 2
dec ecx
jnz loc_463FD2
loc_463FE7:
and ebp, 2
jz loc_463FF7
mov ax, [esi]
add esi, 4
mov [edi], al
add edi, 2
loc_463FF7:
sub edi, 320h
add edi, edx
add edx, 2
cmp edx, 20h
jnz loc_463F7A
loc_46400B:
pop ebp
jmp loc_464688
loc_464011:
xor eax, eax
mov WorldBoolFlag, eax
mov edx, 1Eh
loc_46401D:
cmp edi, gpBufEnd
jb loc_464688
add edi, edx
mov ecx, 20h
sub ecx, edx
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
jz loc_464072
shr ecx, 2
jnb loc_464059
mov ax, [esi+2]
add esi, 4
inc edi
ror eax, 8
mov [edi], al
inc edi
test ecx, ecx
jz loc_46409C
loc_464059:
mov eax, [esi]
add esi, 4
inc edi
ror eax, 8
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
inc edi
dec ecx
jnz loc_464059
jmp loc_46409C
loc_464072:
shr ecx, 2
jnb loc_464087
mov ax, [esi+2]
add esi, 4
mov [edi], al
add edi, 2
test ecx, ecx
jz loc_46409C
loc_464087:
mov eax, [esi]
add esi, 4
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
add edi, 2
dec ecx
jnz loc_464087
loc_46409C:
sub edi, 320h
sub edx, 2
jge loc_46401D
mov edx, 8
loc_4640B0:
cmp edi, gpBufEnd
jb loc_464688
mov ecx, 8
loc_4640C1:
mov eax, [esi]
add esi, 4
inc edi
ror eax, 8
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
inc edi
dec ecx
jnz loc_4640C1
sub edi, 320h
cmp edi, gpBufEnd
jb loc_464688
mov ecx, 8
loc_4640EF:
mov eax, [esi]
add esi, 4
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
add edi, 2
dec ecx
jnz loc_4640EF
sub edi, 320h
dec edx
jnz loc_4640B0
jmp loc_464688
loc_464112:
push ebp
xor eax, eax
mov WorldBoolFlag, eax
mov edx, 1Eh
loc_46411F:
cmp edi, gpBufEnd
jb loc_464209
mov ecx, 20h
sub ecx, edx
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov ebp, ecx
mov WorldBoolFlag, eax
jz loc_464174
shr ecx, 2
jz loc_464160
loc_464149:
mov eax, [esi]
add esi, 4
inc edi
ror eax, 8
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
inc edi
dec ecx
jnz loc_464149
loc_464160:
and ebp, 2
jz loc_46419E
mov ax, [esi]
add esi, 4
inc edi
ror eax, 8
mov [edi], al
inc edi
jmp loc_46419E
loc_464174:
shr ecx, 2
jz loc_46418E
loc_464179:
mov eax, [esi]
add esi, 4
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
add edi, 2
dec ecx
jnz loc_464179
loc_46418E:
and ebp, 2
jz loc_46419E
mov ax, [esi]
add esi, 4
mov [edi], al
add edi, 2
loc_46419E:
sub edi, 320h
add edi, edx
sub edx, 2
jge loc_46411F
mov edx, 8
loc_4641B4:
cmp edi, gpBufEnd
jb loc_464209
mov ecx, 8
loc_4641C1:
mov eax, [esi]
add esi, 4
inc edi
ror eax, 8
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
inc edi
dec ecx
jnz loc_4641C1
sub edi, 320h
cmp edi, gpBufEnd
jb loc_464209
mov ecx, 8
loc_4641EB:
mov eax, [esi]
add esi, 4
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
add edi, 2
dec ecx
jnz loc_4641EB
sub edi, 320h
dec edx
jnz loc_4641B4
loc_464209:
pop ebp
jmp loc_464688
loc_46420F:
mov edx, 10h
xor eax, eax
loc_464216:
cmp edi, gpBufEnd
jb loc_464688
mov ecx, 8
loc_464227:
mov [edi+1], al
mov [edi+3], al
add edi, 4
dec ecx
jnz loc_464227
sub edi, 320h
cmp edi, gpBufEnd
jb loc_464688
mov ecx, 8
loc_46424A:
mov [edi], al
mov [edi+2], al
add edi, 4
dec ecx
jnz loc_46424A
sub edi, 320h
dec edx
jnz loc_464216
jmp loc_464688
loc_464263:
push ebp
mov eax, edi
and eax, 1
mov WorldBoolFlag, eax
mov ebp, 20h
loc_464273:
mov edx, 20h
loc_464278:
xor eax, eax
mov al, [esi]
inc esi
test al, al
js loc_4642F4
sub edx, eax
cmp edi, gpBufEnd
jb loc_46431B
mov ecx, eax
add esi, ecx
mov eax, edi
and eax, 1
cmp eax, WorldBoolFlag
jnz loc_4642C7
xor eax, eax
shr ecx, 1
jnb loc_4642AD
inc edi
test ecx, ecx
jz loc_4642EE
jmp loc_4642D6
loc_4642AD:
shr ecx, 1
jnb loc_4642B9
inc edi
mov [edi], al
inc edi
test ecx, ecx
jz loc_4642EE
loc_4642B9:
mov [edi+1], al
mov [edi+3], al
add edi, 4
dec ecx
jnz loc_4642B9
jmp loc_4642EE
loc_4642C7:
xor eax, eax
shr ecx, 1
jnb loc_4642D6
mov [edi], al
inc edi
test ecx, ecx
jz loc_4642EE
jmp loc_4642AD
loc_4642D6:
shr ecx, 1
jnb loc_4642E3
mov [edi], al
add edi, 2
test ecx, ecx
jz loc_4642EE
loc_4642E3:
mov [edi], al
mov [edi+2], al
add edi, 4
dec ecx
jnz loc_4642E3
loc_4642EE:
test edx, edx
jz loc_464300
jmp loc_464278
loc_4642F4:
neg al
add edi, eax
sub edx, eax
jnz loc_464278
loc_464300:
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
sub edi, 320h
dec ebp
jnz loc_464273
loc_46431B:
pop ebp
jmp loc_464688
loc_464321:
xor eax, eax
mov WorldBoolFlag, eax
mov edx, 1Eh
loc_46432D:
cmp edi, gpBufEnd
jb loc_464688
add edi, edx
mov ecx, 20h
sub ecx, edx
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
jz loc_46436F
xor eax, eax
shr ecx, 2
jnb loc_464361
inc edi
mov [edi], al
inc edi
test ecx, ecx
jz loc_46438A
loc_464361:
mov [edi+1], al
mov [edi+3], al
add edi, 4
dec ecx
jnz loc_464361
jmp loc_46438A
loc_46436F:
xor eax, eax
shr ecx, 2
jnb loc_46437F
mov [edi], al
add edi, 2
test ecx, ecx
jz loc_46438A
loc_46437F:
mov [edi], al
mov [edi+2], al
add edi, 4
dec ecx
jnz loc_46437F
loc_46438A:
sub edi, 320h
test edx, edx
jz loc_464399
sub edx, 2
jmp loc_46432D
loc_464399:
mov edx, 2
loc_46439E:
cmp edi, gpBufEnd
jb loc_464688
add edi, edx
mov ecx, 20h
sub ecx, edx
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
jz loc_4643E0
xor eax, eax
shr ecx, 2
jnb loc_4643D2
inc edi
mov [edi], al
inc edi
test ecx, ecx
jz loc_4643FB
loc_4643D2:
mov [edi+1], al
mov [edi+3], al
add edi, 4
dec ecx
jnz loc_4643D2
jmp loc_4643FB
loc_4643E0:
xor eax, eax
shr ecx, 2
jnb loc_4643F0
mov [edi], al
add edi, 2
test ecx, ecx
jz loc_4643FB
loc_4643F0:
mov [edi], al
mov [edi+2], al
add edi, 4
dec ecx
jnz loc_4643F0
loc_4643FB:
sub edi, 320h
add edx, 2
cmp edx, 20h
jnz loc_46439E
jmp loc_464688
loc_46440E:
xor eax, eax
mov WorldBoolFlag, eax
mov edx, 1Eh
loc_46441A:
cmp edi, gpBufEnd
jb loc_464688
mov ecx, 20h
sub ecx, edx
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
jz loc_46445A
xor eax, eax
shr ecx, 2
jnb loc_46444C
inc edi
mov [edi], al
inc edi
test ecx, ecx
jz loc_464475
loc_46444C:
mov [edi+1], al
mov [edi+3], al
add edi, 4
dec ecx
jnz loc_46444C
jmp loc_464475
loc_46445A:
xor eax, eax
shr ecx, 2
jnb loc_46446A
mov [edi], al
add edi, 2
test ecx, ecx
jz loc_464475
loc_46446A:
mov [edi], al
mov [edi+2], al
add edi, 4
dec ecx
jnz loc_46446A
loc_464475:
sub edi, 320h
test edx, edx
jz loc_464486
add edi, edx
sub edx, 2
jmp loc_46441A
loc_464486:
mov edx, 2
loc_46448B:
cmp edi, gpBufEnd
jb loc_464688
mov ecx, 20h
sub ecx, edx
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
jz loc_4644CB
xor eax, eax
shr ecx, 2
jnb loc_4644BD
inc edi
mov [edi], al
inc edi
test ecx, ecx
jz loc_4644E6
loc_4644BD:
mov [edi+1], al
mov [edi+3], al
add edi, 4
dec ecx
jnz loc_4644BD
jmp loc_4644E6
loc_4644CB:
xor eax, eax
shr ecx, 2
jnb loc_4644DB
mov [edi], al
add edi, 2
test ecx, ecx
jz loc_4644E6
loc_4644DB:
mov [edi], al
mov [edi+2], al
add edi, 4
dec ecx
jnz loc_4644DB
loc_4644E6:
sub edi, 320h
add edi, edx
add edx, 2
cmp edx, 20h
jnz loc_46448B
jmp loc_464688
loc_4644FB:
xor eax, eax
mov WorldBoolFlag, eax
mov edx, 1Eh
loc_464507:
cmp edi, gpBufEnd
jb loc_464688
add edi, edx
mov ecx, 20h
sub ecx, edx
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
jz loc_464549
xor eax, eax
shr ecx, 2
jnb loc_46453B
inc edi
mov [edi], al
inc edi
test ecx, ecx
jz loc_464564
loc_46453B:
mov [edi+1], al
mov [edi+3], al
add edi, 4
dec ecx
jnz loc_46453B
jmp loc_464564
loc_464549:
xor eax, eax
shr ecx, 2
jnb loc_464559
mov [edi], al
add edi, 2
test ecx, ecx
jz loc_464564
loc_464559:
mov [edi], al
mov [edi+2], al
add edi, 4
dec ecx
jnz loc_464559
loc_464564:
sub edi, 320h
test edx, edx
jz loc_464573
sub edx, 2
jmp loc_464507
loc_464573:
mov edx, 8
xor eax, eax
loc_46457A:
cmp edi, gpBufEnd
jb loc_464688
mov ecx, 8
loc_46458B:
mov [edi+1], al
mov [edi+3], al
add edi, 4
dec ecx
jnz loc_46458B
sub edi, 320h
cmp edi, gpBufEnd
jb loc_464688
mov ecx, 8
loc_4645AE:
mov [edi], al
mov [edi+2], al
add edi, 4
dec ecx
jnz loc_4645AE
sub edi, 320h
dec edx
jnz loc_46457A
jmp loc_464688
loc_4645C7:
xor eax, eax
mov WorldBoolFlag, eax
mov edx, 1Eh
loc_4645D3:
cmp edi, gpBufEnd
jb loc_464688
mov ecx, 20h
sub ecx, edx
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
jz loc_464613
xor eax, eax
shr ecx, 2
jnb loc_464605
inc edi
mov [edi], al
inc edi
test ecx, ecx
jz loc_46462E
loc_464605:
mov [edi+1], al
mov [edi+3], al
add edi, 4
dec ecx
jnz loc_464605
jmp loc_46462E
loc_464613:
xor eax, eax
shr ecx, 2
jnb loc_464623
mov [edi], al
add edi, 2
test ecx, ecx
jz loc_46462E
loc_464623:
mov [edi], al
mov [edi+2], al
add edi, 4
dec ecx
jnz loc_464623
loc_46462E:
sub edi, 320h
test edx, edx
jz loc_46463F
add edi, edx
sub edx, 2
jmp loc_4645D3
loc_46463F:
mov edx, 8
xor eax, eax
loc_464646:
cmp edi, gpBufEnd
jb loc_464688
mov ecx, 8
loc_464653:
mov [edi+1], al
mov [edi+3], al
add edi, 4
dec ecx
jnz loc_464653
sub edi, 320h
cmp edi, gpBufEnd
jb loc_464688
mov ecx, 8
loc_464672:
mov [edi], al
mov [edi+2], al
add edi, 4
dec ecx
jnz loc_464672
sub edi, 320h
dec edx
jnz loc_464646
jmp loc_464688
loc_464688:
pop esi
pop edi
pop edx
pop ebx
retn
}
}
__declspec(naked) void drawBottomArchesUpperScreen(BYTE *pBuff, unsigned int *pMask)
{
__asm {
push ebx
push edi
push esi
mov edi, offset SpeedFrameTbl
mov gpCelFrame, edi
mov edi, ecx
mov gpDrawMask, edx
mov eax, light_table_index
test al, al
jz loc_4647A2
cmp al, lightmax
jz loc_464802
mov eax, level_cel_block
and eax, 8000h
jnz loc_464736
mov ebx, pDungeonCels
mov esi, ebx
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 2
add ebx, eax
add esi, [ebx]
mov ebx, light_table_index
shl ebx, 8
add ebx, pLightTbl
mov eax, level_cel_block
mov al, ah
shr eax, 4
and eax, 0Fh
jz loc_46488D
jz loc_464FBC
cmp ax, 1
jz loc_4648D5
cmp ax, 2
jz loc_464964
cmp ax, 3
jz loc_464A30
cmp ax, 4
jz loc_464AFE
jmp loc_464BBC
loc_464736:
mov esi, gpCelFrame
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 4
add eax, light_table_index
shl eax, 2
add esi, eax
mov eax, [esi]
mov esi, pSpeedCels
add esi, eax
mov eax, level_cel_block
mov al, ah
shr eax, 4
and eax, 0Fh
loc_46476B:
cmp ax, 8
jz loc_464C7A
cmp ax, 9
jz loc_464CC1
cmp ax, 0Ah
jz loc_464D4B
cmp ax, 0Bh
jz loc_464DE3
cmp ax, 0Ch
jz loc_464E7D
jmp loc_464F19
loc_4647A2:
mov eax, level_cel_block
and eax, 8000h
jz loc_4647D4
mov esi, gpCelFrame
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 6
add esi, eax
mov eax, level_cel_block
and eax, 0F000h
add eax, [esi]
mov level_cel_block, eax
loc_4647D4:
mov ebx, pDungeonCels
mov esi, ebx
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 2
add ebx, eax
add esi, [ebx]
mov eax, level_cel_block
mov al, ah
shr eax, 4
and eax, 7
add eax, 8
jmp loc_46476B
loc_464802:
mov eax, level_cel_block
and eax, 8000h
jz loc_464834
mov esi, gpCelFrame
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 6
add esi, eax
mov eax, level_cel_block
and eax, 0F000h
add eax, [esi]
mov level_cel_block, eax
loc_464834:
mov ebx, pDungeonCels
mov esi, ebx
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 2
add ebx, eax
add esi, [ebx]
mov eax, level_cel_block
mov al, ah
shr eax, 4
and eax, 7
jz loc_464FBC
cmp ax, 1
jz loc_465002
cmp ax, 2
jz loc_465091
cmp ax, 3
jz loc_465117
cmp ax, 4
jz loc_46519D
jmp loc_465232
loc_46488D:
mov edx, 20h
loc_464892:
cmp edi, gpBufEnd
jb loc_4652C1
push edx
mov eax, gpDrawMask
mov edx, [eax]
mov ecx, 20h
loc_4648AB:
mov al, [esi]
inc esi
shl edx, 1
jnb loc_4648B5
xlat
mov [edi], al
loc_4648B5:
inc edi
dec ecx
jnz loc_4648AB
pop edx
sub edi, 320h
mov eax, gpDrawMask
sub eax, 4
mov gpDrawMask, eax
dec edx
jnz loc_464892
jmp loc_4652C1
loc_4648D5:
mov ecx, 20h
loc_4648DA:
push ecx
mov eax, gpDrawMask
mov eax, [eax]
mov gdwCurrentMask, eax
mov edx, 20h
loc_4648EC:
xor eax, eax
mov al, [esi]
inc esi
test al, al
js loc_464927
sub edx, eax
cmp edi, gpBufEnd
jb loc_4652C0
mov ecx, eax
push edx
mov edx, gdwCurrentMask
loc_46490C:
mov al, [esi]
inc esi
shl edx, 1
jnb loc_464916
xlat
mov [edi], al
loc_464916:
inc edi
dec ecx
jnz loc_46490C
mov gdwCurrentMask, edx
pop edx
test edx, edx
jz loc_464944
jmp loc_4648EC
loc_464927:
neg al
add edi, eax
mov ecx, eax
and ecx, 1Fh
jz loc_464940
push eax
mov eax, gdwCurrentMask
shl eax, cl
mov gdwCurrentMask, eax
pop eax
loc_464940:
sub edx, eax
jnz loc_4648EC
loc_464944:
pop ecx
sub edi, 320h
mov eax, gpDrawMask
sub eax, 4
mov gpDrawMask, eax
dec ecx
jnz loc_4648DA
jmp loc_4652C1
loc_464964:
mov edx, 1Eh
loc_464969:
cmp edi, gpBufEnd
jb loc_4652C1
add edi, edx
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_46499E
mov ax, [esi+2]
add esi, 4
xlat
ror ax, 8
xlat
ror ax, 8
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_4649BB
loc_46499E:
mov eax, [esi]
add esi, 4
xlat
ror eax, 8
xlat
ror eax, 8
xlat
ror eax, 8
xlat
ror eax, 8
mov [edi], eax
add edi, 4
dec ecx
jnz loc_46499E
loc_4649BB:
sub edi, 320h
sub edx, 2
jge loc_464969
mov edx, 2
loc_4649CB:
cmp edi, gpBufEnd
jb loc_4652C1
add edi, edx
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_464A00
mov ax, [esi+2]
add esi, 4
xlat
ror ax, 8
xlat
ror ax, 8
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_464A1D
loc_464A00:
mov eax, [esi]
add esi, 4
xlat
ror eax, 8
xlat
ror eax, 8
xlat
ror eax, 8
xlat
ror eax, 8
mov [edi], eax
add edi, 4
dec ecx
jnz loc_464A00
loc_464A1D:
sub edi, 320h
add edx, 2
cmp edx, 20h
jnz loc_4649CB
jmp loc_4652C1
loc_464A30:
push ebp
mov edx, 1Eh
loc_464A36:
cmp edi, gpBufEnd
jb loc_464AF8
mov ecx, 20h
sub ecx, edx
mov ebp, ecx
shr ecx, 2
jz loc_464A6D
loc_464A50:
mov eax, [esi]
add esi, 4
xlat
ror eax, 8
xlat
ror eax, 8
xlat
ror eax, 8
xlat
ror eax, 8
mov [edi], eax
add edi, 4
dec ecx
jnz loc_464A50
loc_464A6D:
and ebp, 2
jz loc_464A88
mov ax, [esi]
add esi, 4
xlat
ror ax, 8
xlat
ror ax, 8
mov [edi], ax
add edi, 2
loc_464A88:
sub edi, 320h
add edi, edx
sub edx, 2
jge loc_464A36
mov edx, 2
loc_464A9A:
cmp edi, gpBufEnd
jb loc_464AF8
mov ecx, 20h
sub ecx, edx
mov ebp, ecx
shr ecx, 2
jz loc_464ACD
loc_464AB0:
mov eax, [esi]
add esi, 4
xlat
ror eax, 8
xlat
ror eax, 8
xlat
ror eax, 8
xlat
ror eax, 8
mov [edi], eax
add edi, 4
dec ecx
jnz loc_464AB0
loc_464ACD:
and ebp, 2
jz loc_464AE8
mov ax, [esi]
add esi, 4
xlat
ror ax, 8
xlat
ror ax, 8
mov [edi], ax
add edi, 2
loc_464AE8:
sub edi, 320h
add edi, edx
add edx, 2
cmp edx, 20h
jnz loc_464A9A
loc_464AF8:
pop ebp
jmp loc_4652C1
loc_464AFE:
mov edx, 1Eh
loc_464B03:
cmp edi, gpBufEnd
jb loc_4652C1
add edi, edx
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_464B38
mov ax, [esi+2]
add esi, 4
xlat
ror ax, 8
xlat
ror ax, 8
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_464B55
loc_464B38:
mov eax, [esi]
add esi, 4
xlat
ror eax, 8
xlat
ror eax, 8
xlat
ror eax, 8
xlat
ror eax, 8
mov [edi], eax
add edi, 4
dec ecx
jnz loc_464B38
loc_464B55:
sub edi, 320h
sub edx, 2
jge loc_464B03
mov eax, gpDrawMask
sub eax, 40h
mov gpDrawMask, eax
mov edx, 10h
loc_464B72:
cmp edi, gpBufEnd
jb loc_4652C1
push edx
mov eax, gpDrawMask
mov edx, [eax]
mov ecx, 20h
mov eax, esi
and eax, 2
add esi, eax
loc_464B92:
mov al, [esi]
inc esi
shl edx, 1
jnb loc_464B9C
xlat
mov [edi], al
loc_464B9C:
inc edi
dec ecx
jnz loc_464B92
pop edx
sub edi, 320h
mov eax, gpDrawMask
sub eax, 4
mov gpDrawMask, eax
dec edx
jnz loc_464B72
jmp loc_4652C1
loc_464BBC:
push ebp
mov edx, 1Eh
loc_464BC2:
cmp edi, gpBufEnd
jb loc_464C74
mov ecx, 20h
sub ecx, edx
mov ebp, ecx
shr ecx, 2
jz loc_464BF9
loc_464BDC:
mov eax, [esi]
add esi, 4
xlat
ror eax, 8
xlat
ror eax, 8
xlat
ror eax, 8
xlat
ror eax, 8
mov [edi], eax
add edi, 4
dec ecx
jnz loc_464BDC
loc_464BF9:
and ebp, 2
jz loc_464C14
mov ax, [esi]
add esi, 4
xlat
ror ax, 8
xlat
ror ax, 8
mov [edi], ax
add edi, 2
loc_464C14:
sub edi, 320h
add edi, edx
sub edx, 2
jge loc_464BC2
mov eax, gpDrawMask
sub eax, 40h
mov gpDrawMask, eax
mov edx, 10h
loc_464C33:
cmp edi, gpBufEnd
jb loc_464C74
push edx
mov eax, gpDrawMask
mov edx, [eax]
mov ecx, 20h
loc_464C48:
mov al, [esi]
inc esi
shl edx, 1
jnb loc_464C52
xlat
mov [edi], al
loc_464C52:
inc edi
dec ecx
jnz loc_464C48
mov ebp, esi
and ebp, 2
add esi, ebp
pop edx
sub edi, 320h
mov eax, gpDrawMask
sub eax, 4
mov gpDrawMask, eax
dec edx
jnz loc_464C33
loc_464C74:
pop ebp
jmp loc_4652C1
loc_464C7A:
mov edx, 20h
loc_464C7F:
cmp edi, gpBufEnd
jb loc_4652C1
push edx
mov eax, gpDrawMask
mov edx, [eax]
mov ecx, 20h
loc_464C98:
mov al, [esi]
inc esi
shl edx, 1
jnb loc_464CA1
mov [edi], al
loc_464CA1:
inc edi
dec ecx
jnz loc_464C98
pop edx
sub edi, 320h
mov eax, gpDrawMask
sub eax, 4
mov gpDrawMask, eax
dec edx
jnz loc_464C7F
jmp loc_4652C1
loc_464CC1:
mov ecx, 20h
loc_464CC6:
push ecx
mov eax, gpDrawMask
mov eax, [eax]
mov gdwCurrentMask, eax
mov edx, 20h
loc_464CD8:
xor eax, eax
mov al, [esi]
inc esi
test al, al
js loc_464D12
sub edx, eax
cmp edi, gpBufEnd
jb loc_4652C0
push edx
mov edx, gdwCurrentMask
mov ecx, eax
loc_464CF8:
mov al, [esi]
inc esi
shl edx, 1
jnb loc_464D01
mov [edi], al
loc_464D01:
inc edi
dec ecx
jnz loc_464CF8
mov gdwCurrentMask, edx
pop edx
test edx, edx
jz loc_464D2F
jmp loc_464CD8
loc_464D12:
neg al
add edi, eax
mov ecx, eax
and ecx, 1Fh
jz loc_464D2B
mov ebx, gdwCurrentMask
shl ebx, cl
mov gdwCurrentMask, ebx
loc_464D2B:
sub edx, eax
jnz loc_464CD8
loc_464D2F:
pop ecx
sub edi, 320h
mov eax, gpDrawMask
sub eax, 4
mov gpDrawMask, eax
dec ecx
jnz loc_464CC6
jmp loc_4652C1
loc_464D4B:
mov edx, 1Eh
loc_464D50:
cmp edi, gpBufEnd
jb loc_4652C1
add edi, edx
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_464D7B
mov ax, [esi+2]
add esi, 4
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_464D88
loc_464D7B:
mov eax, [esi]
add esi, 4
mov [edi], eax
dec ecx
lea edi, [edi+4]
jnz loc_464D7B
loc_464D88:
sub edi, 320h
sub edx, 2
jge loc_464D50
mov edx, 2
loc_464D98:
cmp edi, gpBufEnd
jb loc_4652C1
add edi, edx
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_464DC3
mov ax, [esi+2]
add esi, 4
mov [edi], ax
test ecx, ecx
lea edi, [edi+2]
jz loc_464DD0
loc_464DC3:
mov eax, [esi]
add esi, 4
mov [edi], eax
add edi, 4
dec ecx
jnz loc_464DC3
loc_464DD0:
sub edi, 320h
add edx, 2
cmp edx, 20h
jnz loc_464D98
jmp loc_4652C1
loc_464DE3:
push ebp
mov edx, 1Eh
loc_464DE9:
cmp edi, gpBufEnd
jb loc_464E77
mov ecx, 20h
sub ecx, edx
mov ebp, ecx
shr ecx, 2
jz loc_464E10
loc_464E03:
mov eax, [esi]
add esi, 4
mov [edi], eax
add edi, 4
dec ecx
jnz loc_464E03
loc_464E10:
and ebp, 2
jz loc_464E21
mov ax, [esi]
add esi, 4
mov [edi], ax
add edi, 2
loc_464E21:
sub edi, 320h
add edi, edx
sub edx, 2
jge loc_464DE9
mov edx, 2
loc_464E33:
cmp edi, gpBufEnd
jb loc_464E77
mov ecx, 20h
sub ecx, edx
mov ebp, ecx
shr ecx, 2
jz loc_464E56
loc_464E49:
mov eax, [esi]
add esi, 4
mov [edi], eax
add edi, 4
dec ecx
jnz loc_464E49
loc_464E56:
and ebp, 2
jz loc_464E67
mov ax, [esi]
add esi, 4
mov [edi], ax
add edi, 2
loc_464E67:
sub edi, 320h
add edi, edx
add edx, 2
cmp edx, 20h
jnz loc_464E33
loc_464E77:
pop ebp
jmp loc_4652C1
loc_464E7D:
mov edx, 1Eh
loc_464E82:
cmp edi, gpBufEnd
jb loc_4652C1
add edi, edx
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_464EAD
mov ax, [esi+2]
add esi, 4
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_464EBA
loc_464EAD:
mov eax, [esi]
add esi, 4
mov [edi], eax
add edi, 4
dec ecx
jnz loc_464EAD
loc_464EBA:
sub edi, 320h
sub edx, 2
jge loc_464E82
mov eax, gpDrawMask
sub eax, 40h
mov gpDrawMask, eax
mov edx, 10h
loc_464ED7:
cmp edi, gpBufEnd
jb loc_4652C1
push edx
mov eax, gpDrawMask
mov edx, [eax]
mov ecx, 20h
loc_464EF0:
mov al, [esi]
inc esi
shl edx, 1
jnb loc_464EF9
mov [edi], al
loc_464EF9:
inc edi
dec ecx
jnz loc_464EF0
pop edx
sub edi, 320h
mov eax, gpDrawMask
sub eax, 4
mov gpDrawMask, eax
dec edx
jnz loc_464ED7
jmp loc_4652C1
loc_464F19:
push ebp
mov edx, 1Eh
loc_464F1F:
cmp edi, gpBufEnd
jb loc_464FB6
mov ecx, 20h
sub ecx, edx
mov ebp, ecx
shr ecx, 2
jz loc_464F46
loc_464F39:
mov eax, [esi]
add esi, 4
mov [edi], eax
add edi, 4
dec ecx
jnz loc_464F39
loc_464F46:
and ebp, 2
jz loc_464F57
mov ax, [esi]
add esi, 4
mov [edi], ax
add edi, 2
loc_464F57:
sub edi, 320h
add edi, edx
sub edx, 2
jge loc_464F1F
mov eax, gpDrawMask
sub eax, 40h
mov gpDrawMask, eax
mov edx, 10h
loc_464F76:
cmp edi, gpBufEnd
jb loc_464FB6
push edx
mov eax, gpDrawMask
mov edx, [eax]
mov ecx, 20h
loc_464F8B:
mov al, [esi]
inc esi
shl edx, 1
jnb loc_464F94
mov [edi], al
loc_464F94:
inc edi
dec ecx
jnz loc_464F8B
mov ebp, esi
and ebp, 2
add esi, ebp
pop edx
sub edi, 320h
mov eax, gpDrawMask
sub eax, 4
mov gpDrawMask, eax
dec edx
jnz loc_464F76
loc_464FB6:
pop ebp
jmp loc_4652C1
loc_464FBC:
mov edx, 20h
loc_464FC1:
cmp edi, gpBufEnd
jb loc_4652C1
push edx
mov eax, gpDrawMask
mov edx, [eax]
xor eax, eax
mov ecx, 20h
loc_464FDC:
shl edx, 1
jnb loc_464FE2
mov [edi], al
loc_464FE2:
inc edi
dec ecx
jnz loc_464FDC
pop edx
sub edi, 320h
mov eax, gpDrawMask
sub eax, 4
mov gpDrawMask, eax
dec edx
jnz loc_464FC1
jmp loc_4652C1
loc_465002:
mov ecx, 20h
loc_465007:
push ecx
mov eax, gpDrawMask
mov eax, [eax]
mov gdwCurrentMask, eax
mov edx, 20h
loc_465019:
xor eax, eax
mov al, [esi]
inc esi
test al, al
js loc_465054
sub edx, eax
cmp edi, gpBufEnd
jb loc_4652C0
push edx
mov edx, gdwCurrentMask
mov ecx, eax
add esi, ecx
xor eax, eax
loc_46503D:
shl edx, 1
jnb loc_465043
mov [edi], al
loc_465043:
inc edi
dec ecx
jnz loc_46503D
mov gdwCurrentMask, edx
pop edx
test edx, edx
jz loc_465071
jmp loc_465019
loc_465054:
neg al
add edi, eax
mov ecx, eax
and ecx, 1Fh
jz loc_46506D
mov ebx, gdwCurrentMask
shl ebx, cl
mov gdwCurrentMask, ebx
loc_46506D:
sub edx, eax
jnz loc_465019
loc_465071:
pop ecx
sub edi, 320h
mov eax, gpDrawMask
sub eax, 4
mov gpDrawMask, eax
dec ecx
jnz loc_465007
jmp loc_4652C1
loc_465091:
mov edx, 1Eh
xor eax, eax
loc_465098:
cmp edi, gpBufEnd
jb loc_4652C1
add edi, edx
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_4650BC
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_4650C4
loc_4650BC:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_4650BC
loc_4650C4:
sub edi, 320h
test edx, edx
jz loc_4650D3
sub edx, 2
jmp loc_465098
loc_4650D3:
mov edx, 2
loc_4650D8:
cmp edi, gpBufEnd
jb loc_4652C1
add edi, edx
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_4650FC
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_465104
loc_4650FC:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_4650FC
loc_465104:
sub edi, 320h
add edx, 2
cmp edx, 20h
jnz loc_4650D8
jmp loc_4652C1
loc_465117:
mov edx, 1Eh
xor eax, eax
loc_46511E:
cmp edi, gpBufEnd
jb loc_4652C1
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_465140
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_465148
loc_465140:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_465140
loc_465148:
sub edi, 320h
test edx, edx
jz loc_465159
add edi, edx
sub edx, 2
jmp loc_46511E
loc_465159:
mov edx, 2
loc_46515E:
cmp edi, gpBufEnd
jb loc_4652C1
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_465180
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_465188
loc_465180:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_465180
loc_465188:
sub edi, 320h
add edi, edx
add edx, 2
cmp edx, 20h
jnz loc_46515E
jmp loc_4652C1
loc_46519D:
mov edx, 1Eh
xor eax, eax
loc_4651A4:
cmp edi, gpBufEnd
jb loc_4652C1
add edi, edx
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_4651C8
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_4651D0
loc_4651C8:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_4651C8
loc_4651D0:
sub edi, 320h
test edx, edx
jz loc_4651DF
sub edx, 2
jmp loc_4651A4
loc_4651DF:
mov eax, gpDrawMask
sub eax, 40h
mov gpDrawMask, eax
mov edx, 10h
loc_4651F1:
cmp edi, gpBufEnd
jb loc_4652C1
push edx
mov eax, gpDrawMask
mov edx, [eax]
xor eax, eax
mov ecx, 20h
loc_46520C:
shl edx, 1
jnb loc_465212
mov [edi], al
loc_465212:
inc edi
dec ecx
jnz loc_46520C
pop edx
sub edi, 320h
mov eax, gpDrawMask
sub eax, 4
mov gpDrawMask, eax
dec edx
jnz loc_4651F1
jmp loc_4652C1
loc_465232:
mov edx, 1Eh
xor eax, eax
loc_465239:
cmp edi, gpBufEnd
jb $+82h
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_46525B
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_465263
loc_46525B:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_46525B
loc_465263:
sub edi, 320h
test edx, edx
jz loc_465274
add edi, edx
sub edx, 2
jmp loc_465239
loc_465274:
mov eax, gpDrawMask
sub eax, 40h
mov gpDrawMask, eax
mov edx, 10h
loc_465286:
cmp edi, gpBufEnd
jb loc_4652C1
push edx
mov eax, gpDrawMask
mov edx, [eax]
xor eax, eax
mov ecx, 20h
loc_46529D:
shl edx, 1
jnb loc_4652A3
mov [edi], al
loc_4652A3:
inc edi
dec ecx
jnz loc_46529D
pop edx
sub edi, 320h
mov eax, gpDrawMask
sub eax, 4
mov gpDrawMask, eax
dec edx
jnz loc_465286
jmp loc_4652C1
loc_4652C0:
pop eax
loc_4652C1:
pop esi
pop edi
pop ebx
retn
}
}
__declspec(naked) void drawUpperScreen(BYTE *pBuff)
{
__asm {
push ebx
push edx
push edi
push esi
mov edx, cel_transparency_active
test edx, edx
jz loc_465372
mov dl, arch_draw_type
cmp dl, 0
jnz loc_4652EC
call drawTopArchesUpperScreen
jmp loc_465F33
loc_4652EC:
cmp dl, 1
jnz loc_46532F
mov ebx, level_piece_id
mov al, block_lvid[ebx]
cmp al, 1
jz loc_465307
cmp al, 3
jz loc_465307
jmp loc_46532F
loc_465307:
mov edx, offset LeftMask
add edx, 7Ch
call drawBottomArchesUpperScreen
jmp loc_465F33
cmp al, 4
jnz loc_46532F
mov edx, offset RightMask
add edx, 7Ch
call drawBottomArchesUpperScreen
jmp loc_465F33
loc_46532F:
cmp dl, 2
jnz loc_465372
mov ebx, level_piece_id
mov al, block_lvid[ebx]
cmp al, 2
jz loc_46534A
cmp al, 3
jz loc_46534A
jmp loc_465372
loc_46534A:
mov edx, offset RightMask
add edx, 7Ch
call drawBottomArchesUpperScreen
jmp loc_465F33
cmp al, 4
jnz loc_465372
mov edx, offset LeftMask
add edx, 7Ch
call drawBottomArchesUpperScreen
jmp loc_465F33
loc_465372:
mov edi, offset SpeedFrameTbl
mov gpCelFrame, edi
mov edi, ecx
mov eax, light_table_index
test al, al
jz loc_465474
cmp al, lightmax
jz loc_4654D4
mov eax, level_cel_block
and eax, 8000h
jnz loc_46540A
mov ebx, pDungeonCels
mov esi, ebx
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 2
add ebx, eax
add esi, [ebx]
mov ebx, light_table_index
shl ebx, 8
add ebx, pLightTbl
mov eax, level_cel_block
shr eax, 0Ch
and eax, 0Fh
jz loc_46555D
cmp ax, 1
jz loc_4655B5
cmp ax, 2
jz loc_465663
cmp ax, 3
jz loc_465765
cmp ax, 4
jz loc_465867
jmp loc_465939
loc_46540A:
mov esi, gpCelFrame
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 4
add eax, light_table_index
shl eax, 2
add esi, eax
mov eax, [esi]
mov esi, pSpeedCels
add esi, eax
mov eax, level_cel_block
shr eax, 0Ch
and eax, 0Fh
loc_46543D:
cmp ax, 8
jz loc_465A0B
cmp ax, 9
jz loc_465A3C
cmp ax, 0Ah
jz loc_465AA8
cmp ax, 0Bh
jz loc_465B40
cmp ax, 0Ch
jz loc_465BDA
jmp loc_465C53
loc_465474:
mov eax, level_cel_block
and eax, 8000h
jz loc_4654A6
mov esi, gpCelFrame
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 6
add esi, eax
mov eax, level_cel_block
and eax, 0F000h
add eax, [esi]
mov level_cel_block, eax
loc_4654A6:
mov ebx, pDungeonCels
mov esi, ebx
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 2
add ebx, eax
add esi, [ebx]
mov eax, level_cel_block
mov al, ah
shr eax, 4
and eax, 7
add eax, 8
jmp loc_46543D
loc_4654D4:
mov eax, level_cel_block
and eax, 8000h
jz loc_465506
mov esi, gpCelFrame
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 6
add esi, eax
mov eax, level_cel_block
and eax, 0F000h
add eax, [esi]
mov level_cel_block, eax
loc_465506:
mov ebx, pDungeonCels
mov esi, ebx
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 2
add ebx, eax
add esi, [ebx]
mov eax, level_cel_block
shr eax, 0Ch
and eax, 7
jz loc_465CC8
cmp ax, 1
jz loc_465CF6
cmp ax, 2
jz loc_465D58
cmp ax, 3
jz loc_465DDE
cmp ax, 4
jz loc_465E64
jmp loc_465ECF
loc_46555D:
mov edx, 20h
loc_465562:
cmp edi, gpBufEnd
jb loc_465F33
mov ecx, 20h
push edx
loc_465574:
mov eax, [esi]
add esi, 4
mov dl, al
mov ch, [ebx+edx]
mov dl, ah
ror eax, 10h
mov [edi], ch
mov ch, [ebx+edx]
mov dl, al
mov [edi+1], ch
mov ch, [ebx+edx]
mov dl, ah
mov [edi+2], ch
mov ch, [ebx+edx]
mov [edi+3], ch
add edi, 4
sub cl, 4
cmp cl, 4
jge loc_465574
pop edx
sub edi, 320h
dec edx
jnz loc_465562
jmp loc_465F33
loc_4655B5:
push ebp
mov ebp, 20h
loc_4655BB:
mov edx, 20h
loc_4655C0:
xor eax, eax
mov al, [esi]
inc esi
test al, al
js loc_465644
sub edx, eax
cmp edi, gpBufEnd
jb loc_46565D
mov ecx, eax
push edx
cmp cl, 4
jl loc_465611
loc_4655DF:
mov eax, [esi]
add esi, 4
mov dl, al
mov ch, [ebx+edx]
mov dl, ah
ror eax, 10h
mov [edi], ch
mov ch, [ebx+edx]
mov dl, al
mov [edi+1], ch
mov ch, [ebx+edx]
mov dl, ah
mov [edi+2], ch
mov ch, [ebx+edx]
mov [edi+3], ch
add edi, 4
sub cl, 4
cmp cl, 4
jge loc_4655DF
loc_465611:
cmp cl, 2
jl loc_46562C
mov dl, [esi]
mov ch, [ebx+edx]
mov [edi], ch
mov dl, [esi+1]
mov ch, [ebx+edx]
mov [edi+1], ch
add esi, 2
add edi, 2
loc_46562C:
and cl, 1
jz loc_46563A
mov dl, [esi]
inc esi
mov dl, [ebx+edx]
mov [edi], dl
inc edi
loc_46563A:
pop edx
test edx, edx
jz loc_465650
jmp loc_4655C0
loc_465644:
neg al
add edi, eax
sub edx, eax
jnz loc_4655C0
loc_465650:
sub edi, 320h
dec ebp
jnz loc_4655BB
loc_46565D:
pop ebp
jmp loc_465F33
loc_465663:
push ebp
mov ebp, 1Eh
loc_465669:
cmp edi, gpBufEnd
jb loc_46575F
add edi, ebp
mov ecx, 20h
sub ecx, ebp
mov edx, ecx
and edx, 2
add esi, edx
cmp cl, 4
jl loc_4656BC
loc_46568A:
mov eax, [esi]
add esi, 4
mov dl, al
mov ch, [ebx+edx]
mov dl, ah
ror eax, 10h
mov [edi], ch
mov ch, [ebx+edx]
mov dl, al
mov [edi+1], ch
mov ch, [ebx+edx]
mov dl, ah
mov [edi+2], ch
mov ch, [ebx+edx]
mov [edi+3], ch
add edi, 4
sub cl, 4
cmp cl, 4
jge loc_46568A
loc_4656BC:
cmp cl, 2
jl loc_4656D7
mov dl, [esi]
mov ch, [ebx+edx]
mov [edi], ch
mov dl, [esi+1]
mov ch, [ebx+edx]
mov [edi+1], ch
add esi, 2
add edi, 2
loc_4656D7:
sub edi, 320h
sub ebp, 2
jge loc_465669
mov ebp, 2
loc_4656E7:
cmp edi, gpBufEnd
jb loc_46575F
add edi, ebp
mov ecx, 20h
sub ecx, ebp
mov edx, ecx
and edx, 2
add esi, edx
cmp cl, 4
jl loc_465736
loc_465704:
mov eax, [esi]
add esi, 4
mov dl, al
mov ch, [ebx+edx]
mov dl, ah
ror eax, 10h
mov [edi], ch
mov ch, [ebx+edx]
mov dl, al
mov [edi+1], ch
mov ch, [ebx+edx]
mov dl, ah
mov [edi+2], ch
mov ch, [ebx+edx]
mov [edi+3], ch
add edi, 4
sub cl, 4
cmp cl, 4
jge loc_465704
loc_465736:
cmp cl, 2
jl loc_465751
mov dl, [esi]
mov ch, [ebx+edx]
mov [edi], ch
mov dl, [esi+1]
mov ch, [ebx+edx]
mov [edi+1], ch
add esi, 2
add edi, 2
loc_465751:
sub edi, 320h
add ebp, 2
cmp ebp, 20h
jnz loc_4656E7
loc_46575F:
pop ebp
jmp loc_465F33
loc_465765:
push ebp
mov ebp, 1Eh
loc_46576B:
cmp edi, gpBufEnd
jb loc_465861
mov ecx, 20h
sub ecx, ebp
cmp cl, 4
jl loc_4657B5
loc_465783:
mov eax, [esi]
add esi, 4
mov dl, al
mov ch, [ebx+edx]
mov dl, ah
ror eax, 10h
mov [edi], ch
mov ch, [ebx+edx]
mov dl, al
mov [edi+1], ch
mov ch, [ebx+edx]
mov dl, ah
mov [edi+2], ch
mov ch, [ebx+edx]
mov [edi+3], ch
add edi, 4
sub cl, 4
cmp cl, 4
jge loc_465783
loc_4657B5:
cmp cl, 2
jl loc_4657D0
mov dl, [esi]
mov ch, [ebx+edx]
mov [edi], ch
mov dl, [esi+1]
mov ch, [ebx+edx]
mov [edi+1], ch
add esi, 2
add edi, 2
loc_4657D0:
mov edx, esi
and edx, 2
add esi, edx
sub edi, 320h
add edi, ebp
sub ebp, 2
jge loc_46576B
mov ebp, 2
loc_4657E9:
cmp edi, gpBufEnd
jb loc_465861
mov ecx, 20h
sub ecx, ebp
cmp cl, 4
jl loc_46582F
loc_4657FD:
mov eax, [esi]
add esi, 4
mov dl, al
mov ch, [ebx+edx]
mov dl, ah
ror eax, 10h
mov [edi], ch
mov ch, [ebx+edx]
mov dl, al
mov [edi+1], ch
mov ch, [ebx+edx]
mov dl, ah
mov [edi+2], ch
mov ch, [ebx+edx]
mov [edi+3], ch
add edi, 4
sub cl, 4
cmp cl, 4
jge loc_4657FD
loc_46582F:
cmp cl, 2
jl loc_46584A
mov dl, [esi]
mov ch, [ebx+edx]
mov [edi], ch
mov dl, [esi+1]
mov ch, [ebx+edx]
mov [edi+1], ch
add esi, 2
add edi, 2
loc_46584A:
mov edx, esi
and edx, 2
add esi, edx
sub edi, 320h
add edi, ebp
add ebp, 2
cmp ebp, 20h
jnz loc_4657E9
loc_465861:
pop ebp
jmp loc_465F33
loc_465867:
push ebp
mov ebp, 1Eh
loc_46586D:
cmp edi, gpBufEnd
jb loc_465933
add edi, ebp
mov ecx, 20h
sub ecx, ebp
mov edx, ecx
and edx, 2
add esi, edx
cmp cl, 4
jl loc_4658C0
loc_46588E:
mov eax, [esi]
add esi, 4
mov dl, al
mov ch, [ebx+edx]
mov dl, ah
ror eax, 10h
mov [edi], ch
mov ch, [ebx+edx]
mov dl, al
mov [edi+1], ch
mov ch, [ebx+edx]
mov dl, ah
mov [edi+2], ch
mov ch, [ebx+edx]
mov [edi+3], ch
add edi, 4
sub cl, 4
cmp cl, 4
jge loc_46588E
loc_4658C0:
cmp cl, 2
jl loc_4658DB
mov dl, [esi]
mov ch, [ebx+edx]
mov [edi], ch
mov dl, [esi+1]
mov ch, [ebx+edx]
mov [edi+1], ch
add esi, 2
add edi, 2
loc_4658DB:
sub edi, 320h
sub ebp, 2
jge loc_46586D
mov ebp, 10h
loc_4658EB:
cmp edi, gpBufEnd
jb loc_465933
mov ecx, 20h
loc_4658F8:
mov eax, [esi]
add esi, 4
mov dl, al
mov ch, [ebx+edx]
mov dl, ah
ror eax, 10h
mov [edi], ch
mov ch, [ebx+edx]
mov dl, al
mov [edi+1], ch
mov ch, [ebx+edx]
mov dl, ah
mov [edi+2], ch
mov ch, [ebx+edx]
mov [edi+3], ch
add edi, 4
sub cl, 4
cmp cl, 4
jge loc_4658F8
sub edi, 320h
dec ebp
jnz loc_4658EB
loc_465933:
pop ebp
jmp loc_465F33
loc_465939:
push ebp
mov ebp, 1Eh
loc_46593F:
cmp edi, gpBufEnd
jb loc_465A05
mov ecx, 20h
sub ecx, ebp
cmp cl, 4
jl loc_465989
loc_465957:
mov eax, [esi]
add esi, 4
mov dl, al
mov ch, [ebx+edx]
mov dl, ah
ror eax, 10h
mov [edi], ch
mov ch, [ebx+edx]
mov dl, al
mov [edi+1], ch
mov ch, [ebx+edx]
mov dl, ah
mov [edi+2], ch
mov ch, [ebx+edx]
mov [edi+3], ch
add edi, 4
sub cl, 4
cmp cl, 4
jge loc_465957
loc_465989:
cmp cl, 2
jl loc_4659A4
mov dl, [esi]
mov ch, [ebx+edx]
mov [edi], ch
mov dl, [esi+1]
mov ch, [ebx+edx]
mov [edi+1], ch
add esi, 2
add edi, 2
loc_4659A4:
mov edx, esi
and edx, 2
add esi, edx
sub edi, 320h
add edi, ebp
sub ebp, 2
jge loc_46593F
mov ebp, 10h
loc_4659BD:
cmp edi, gpBufEnd
jb loc_465A05
mov ecx, 20h
loc_4659CA:
mov eax, [esi]
add esi, 4
mov dl, al
mov ch, [ebx+edx]
mov dl, ah
ror eax, 10h
mov [edi], ch
mov ch, [ebx+edx]
mov dl, al
mov [edi+1], ch
mov ch, [ebx+edx]
mov dl, ah
mov [edi+2], ch
mov ch, [ebx+edx]
mov [edi+3], ch
add edi, 4
sub cl, 4
cmp cl, 4
jge loc_4659CA
sub edi, 320h
dec ebp
jnz loc_4659BD
loc_465A05:
pop ebp
jmp loc_465F33
loc_465A0B:
mov edx, 20h
loc_465A10:
cmp edi, gpBufEnd
jb loc_465F33
mov ecx, 8
loc_465A21:
mov eax, [esi]
add esi, 4
mov [edi], eax
add edi, 4
dec ecx
jnz loc_465A21
sub edi, 320h
dec edx
jnz loc_465A10
jmp loc_465F33
loc_465A3C:
push ebp
mov ebp, 20h
loc_465A42:
mov edx, 20h
loc_465A47:
xor eax, eax
mov al, [esi]
inc esi
test al, al
js loc_465A91
sub edx, eax
cmp edi, gpBufEnd
jb loc_465AA2
mov ecx, eax
shr ecx, 1
jnb loc_465A6A
mov al, [esi]
inc esi
mov [edi], al
inc edi
test ecx, ecx
jz loc_465A8B
loc_465A6A:
shr ecx, 1
jnb loc_465A7E
mov ax, [esi]
add esi, 2
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_465A8B
loc_465A7E:
mov eax, [esi]
add esi, 4
mov [edi], eax
add edi, 4
dec ecx
jnz loc_465A7E
loc_465A8B:
test edx, edx
jz loc_465A99
jmp loc_465A47
loc_465A91:
neg al
add edi, eax
sub edx, eax
jnz loc_465A47
loc_465A99:
sub edi, 320h
dec ebp
jnz loc_465A42
loc_465AA2:
pop ebp
jmp loc_465F33
loc_465AA8:
mov edx, 1Eh
loc_465AAD:
cmp edi, gpBufEnd
jb loc_465F33
add edi, edx
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_465AD8
mov ax, [esi+2]
add esi, 4
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_465AE5
loc_465AD8:
mov eax, [esi]
add esi, 4
mov [edi], eax
add edi, 4
dec ecx
jnz loc_465AD8
loc_465AE5:
sub edi, 320h
sub edx, 2
jge loc_465AAD
mov edx, 2
loc_465AF5:
cmp edi, gpBufEnd
jb loc_465F33
add edi, edx
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_465B20
mov ax, [esi+2]
add esi, 4
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_465B2D
loc_465B20:
mov eax, [esi]
add esi, 4
mov [edi], eax
add edi, 4
dec ecx
jnz loc_465B20
loc_465B2D:
sub edi, 320h
add edx, 2
cmp edx, 20h
jnz loc_465AF5
jmp loc_465F33
loc_465B40:
push ebp
mov edx, 1Eh
loc_465B46:
cmp edi, gpBufEnd
jb loc_465BD4
mov ecx, 20h
sub ecx, edx
mov ebp, ecx
shr ecx, 2
jz loc_465B6D
loc_465B60:
mov eax, [esi]
add esi, 4
mov [edi], eax
add edi, 4
dec ecx
jnz loc_465B60
loc_465B6D:
and ebp, 2
jz loc_465B7E
mov ax, [esi]
add esi, 4
mov [edi], ax
add edi, 2
loc_465B7E:
sub edi, 320h
add edi, edx
sub edx, 2
jge loc_465B46
mov edx, 2
loc_465B90:
cmp edi, gpBufEnd
jb loc_465BD4
mov ecx, 20h
sub ecx, edx
mov ebp, ecx
shr ecx, 2
jz loc_465BB3
loc_465BA6:
mov eax, [esi]
add esi, 4
mov [edi], eax
add edi, 4
dec ecx
jnz loc_465BA6
loc_465BB3:
and ebp, 2
jz loc_465BC4
mov ax, [esi]
add esi, 4
mov [edi], ax
add edi, 2
loc_465BC4:
sub edi, 320h
add edi, edx
add edx, 2
cmp edx, 20h
jnz loc_465B90
loc_465BD4:
pop ebp
jmp loc_465F33
loc_465BDA:
mov edx, 1Eh
loc_465BDF:
cmp edi, gpBufEnd
jb loc_465F33
add edi, edx
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_465C0A
mov ax, [esi+2]
add esi, 4
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_465C17
loc_465C0A:
mov eax, [esi]
add esi, 4
mov [edi], eax
add edi, 4
dec ecx
jnz loc_465C0A
loc_465C17:
sub edi, 320h
sub edx, 2
jge loc_465BDF
mov edx, 10h
loc_465C27:
cmp edi, gpBufEnd
jb loc_465F33
mov ecx, 8
loc_465C38:
mov eax, [esi]
add esi, 4
mov [edi], eax
add edi, 4
dec ecx
jnz loc_465C38
sub edi, 320h
dec edx
jnz loc_465C27
jmp loc_465F33
loc_465C53:
push ebp
mov edx, 1Eh
loc_465C59:
cmp edi, gpBufEnd
jb loc_465CC2
mov ecx, 20h
sub ecx, edx
mov ebp, ecx
shr ecx, 2
jz loc_465C7C
loc_465C6F:
mov eax, [esi]
add esi, 4
mov [edi], eax
add edi, 4
dec ecx
jnz loc_465C6F
loc_465C7C:
and ebp, 2
jz loc_465C8D
mov ax, [esi]
add esi, 4
mov [edi], ax
add edi, 2
loc_465C8D:
sub edi, 320h
add edi, edx
sub edx, 2
jge loc_465C59
mov edx, 10h
loc_465C9F:
cmp edi, gpBufEnd
jb loc_465CC2
mov ecx, 8
loc_465CAC:
mov eax, [esi]
add esi, 4
mov [edi], eax
add edi, 4
dec ecx
jnz loc_465CAC
sub edi, 320h
dec edx
jnz loc_465C9F
loc_465CC2:
pop ebp
jmp loc_465F33
loc_465CC8:
mov edx, 20h
xor eax, eax
loc_465CCF:
cmp edi, gpBufEnd
jb loc_465F33
mov ecx, 8
loc_465CE0:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_465CE0
sub edi, 320h
dec edx
jnz loc_465CCF
jmp loc_465F33
loc_465CF6:
push ebp
mov ebp, 20h
loc_465CFC:
mov edx, 20h
loc_465D01:
xor eax, eax
mov al, [esi]
inc esi
test al, al
js loc_465D41
sub edx, eax
cmp edi, gpBufEnd
jb loc_465D52
mov ecx, eax
add esi, ecx
xor eax, eax
shr ecx, 1
jnb loc_465D25
mov [edi], al
inc edi
test ecx, ecx
jz loc_465D3B
loc_465D25:
shr ecx, 1
jnb loc_465D33
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_465D3B
loc_465D33:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_465D33
loc_465D3B:
test edx, edx
jz loc_465D49
jmp loc_465D01
loc_465D41:
neg al
add edi, eax
sub edx, eax
jnz loc_465D01
loc_465D49:
sub edi, 320h
dec ebp
jnz loc_465CFC
loc_465D52:
pop ebp
jmp loc_465F33
loc_465D58:
mov edx, 1Eh
xor eax, eax
loc_465D5F:
cmp edi, gpBufEnd
jb loc_465F33
add edi, edx
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_465D83
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_465D8B
loc_465D83:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_465D83
loc_465D8B:
sub edi, 320h
test edx, edx
jz loc_465D9A
sub edx, 2
jmp loc_465D5F
loc_465D9A:
mov edx, 2
loc_465D9F:
cmp edi, gpBufEnd
jb loc_465F33
add edi, edx
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_465DC3
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_465DCB
loc_465DC3:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_465DC3
loc_465DCB:
sub edi, 320h
add edx, 2
cmp edx, 20h
jnz loc_465D9F
jmp loc_465F33
loc_465DDE:
mov edx, 1Eh
xor eax, eax
loc_465DE5:
cmp edi, gpBufEnd
jb loc_465F33
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_465E07
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_465E0F
loc_465E07:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_465E07
loc_465E0F:
sub edi, 320h
test edx, edx
jz loc_465E20
add edi, edx
sub edx, 2
jmp loc_465DE5
loc_465E20:
mov edx, 2
loc_465E25:
cmp edi, gpBufEnd
jb loc_465F33
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_465E47
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_465E4F
loc_465E47:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_465E47
loc_465E4F:
sub edi, 320h
add edi, edx
add edx, 2
cmp edx, 20h
jnz loc_465E25
jmp loc_465F33
loc_465E64:
mov edx, 1Eh
xor eax, eax
loc_465E6B:
cmp edi, gpBufEnd
jb loc_465F33
add edi, edx
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_465E8F
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_465E97
loc_465E8F:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_465E8F
loc_465E97:
sub edi, 320h
test edx, edx
jz loc_465EA6
sub edx, 2
jmp loc_465E6B
loc_465EA6:
mov edx, 10h
loc_465EAB:
cmp edi, gpBufEnd
jb $+82h
mov ecx, 8
loc_465EBC:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_465EBC
sub edi, 320h
dec edx
jnz loc_465EAB
jmp loc_465F33
loc_465ECF:
mov edx, 1Eh
xor eax, eax
loc_465ED6:
cmp edi, gpBufEnd
jb loc_465F33
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_465EF4
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_465EFC
loc_465EF4:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_465EF4
loc_465EFC:
sub edi, 320h
test edx, edx
jz loc_465F0D
add edi, edx
sub edx, 2
jmp loc_465ED6
loc_465F0D:
mov edx, 10h
loc_465F12:
cmp edi, gpBufEnd
jb loc_465F33
mov ecx, 8
loc_465F1F:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_465F1F
sub edi, 320h
dec edx
jnz loc_465F12
jmp loc_465F33
pop eax
loc_465F33:
pop esi
pop edi
pop edx
pop ebx
retn
}
}
__declspec(naked) void drawTopArchesLowerScreen(BYTE *pBuff)
{
__asm {
push ebx
push edx
push edi
push esi
mov edi, offset SpeedFrameTbl
mov gpCelFrame, edi
mov edi, ecx
mov eax, light_table_index
test al, al
jz loc_466042
cmp al, lightmax
jz loc_4660A2
mov eax, level_cel_block
and eax, 8000h
jnz loc_465FD6
mov ebx, pDungeonCels
mov esi, ebx
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 2
add ebx, eax
add esi, [ebx]
mov ebx, light_table_index
shl ebx, 8
add ebx, pLightTbl
mov eax, level_cel_block
mov al, ah
shr eax, 4
and eax, 0Fh
jz loc_46612D
cmp ax, 1
jz loc_4661AD
cmp ax, 2
jz loc_466310
cmp ax, 3
jz loc_466611
cmp ax, 4
jz loc_466912
jmp loc_466B11
loc_465FD6:
mov esi, gpCelFrame
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 4
add eax, light_table_index
shl eax, 2
add esi, eax
mov eax, [esi]
mov esi, pSpeedCels
add esi, eax
mov eax, level_cel_block
mov al, ah
shr eax, 4
and eax, 0Fh
loc_46600B:
cmp ax, 8
jz loc_466D10
cmp ax, 9
jz loc_466D7F
cmp ax, 0Ah
jz loc_466E62
cmp ax, 0Bh
jz loc_46701C
cmp ax, 0Ch
jz loc_4671E1
jmp loc_46732D
loc_466042:
mov eax, level_cel_block
and eax, 8000h
jz loc_466074
mov esi, gpCelFrame
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 6
add esi, eax
mov eax, level_cel_block
and eax, 0F000h
add eax, [esi]
mov level_cel_block, eax
loc_466074:
mov ebx, pDungeonCels
mov esi, ebx
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 2
add ebx, eax
add esi, [ebx]
mov eax, level_cel_block
mov al, ah
shr eax, 4
and eax, 7
add eax, 8
jmp loc_46600B
loc_4660A2:
mov eax, level_cel_block
and eax, 8000h
jz loc_4660D4
mov esi, gpCelFrame
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 6
add esi, eax
mov eax, level_cel_block
and eax, 0F000h
add eax, [esi]
mov level_cel_block, eax
loc_4660D4:
mov ebx, pDungeonCels
mov esi, ebx
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 2
add ebx, eax
add esi, [ebx]
mov eax, level_cel_block
mov al, ah
shr eax, 4
and eax, 7
jz loc_46747D
cmp ax, 1
jz loc_4674D9
cmp ax, 2
jz loc_467599
cmp ax, 3
jz loc_467692
cmp ax, 4
jz loc_46778F
jmp loc_46786B
loc_46612D:
push ebp
mov ebp, 10h
loc_466133:
cmp edi, gpBufEnd
jb loc_466143
add esi, 20h
add edi, 20h
jmp loc_466166
loc_466143:
mov ecx, 8
loc_466148:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_466148
loc_466166:
sub edi, 320h
cmp edi, gpBufEnd
jb loc_46617C
add esi, 20h
add edi, 20h
jmp loc_46619E
loc_46617C:
mov ecx, 8
loc_466181:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_466181
loc_46619E:
sub edi, 320h
dec ebp
jnz loc_466133
pop ebp
jmp loc_467944
loc_4661AD:
push ebp
mov eax, edi
and eax, 1
mov WorldBoolFlag, eax
mov ecx, 20h
loc_4661BD:
push ecx
mov ebp, 20h
loc_4661C3:
xor eax, eax
mov al, [esi]
inc esi
test al, al
js loc_4662E2
sub ebp, eax
cmp edi, gpBufEnd
jb loc_4661E3
add esi, eax
add edi, eax
jmp loc_4662D9
loc_4661E3:
mov ecx, eax
mov eax, edi
and eax, 1
cmp eax, WorldBoolFlag
jnz loc_466263
shr ecx, 1
jb loc_46622D
shr ecx, 1
jnb loc_466209
mov dl, [esi+1]
mov dl, [ebx+edx]
add esi, 2
mov [edi+1], dl
add edi, 2
loc_466209:
test cl, cl
jz loc_46622B
loc_46620D:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_46620D
loc_46622B:
jmp loc_466261
loc_46622D:
inc esi
inc edi
shr ecx, 1
jnb loc_466240
mov dl, [esi]
mov dl, [ebx+edx]
add esi, 2
mov [edi], dl
add edi, 2
loc_466240:
test cl, cl
jz loc_466261
loc_466244:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_466244
loc_466261:
jmp loc_4662D9
loc_466263:
shr ecx, 1
jb loc_46629B
shr ecx, 1
jnb loc_466278
mov dl, [esi]
mov dl, [ebx+edx]
add esi, 2
mov [edi], dl
add edi, 2
loc_466278:
test cl, cl
jz loc_466299
loc_46627C:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_46627C
loc_466299:
jmp loc_4662D9
loc_46629B:
mov dl, [esi]
mov dl, [ebx+edx]
inc esi
mov [edi], dl
inc edi
shr ecx, 1
jnb loc_4662B7
mov dl, [esi+1]
mov dl, [ebx+edx]
add esi, 2
mov [edi+1], dl
add edi, 2
loc_4662B7:
test cl, cl
jz loc_4662D9
loc_4662BB:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_4662BB
loc_4662D9:
test ebp, ebp
jz loc_4662EE
jmp loc_4661C3
loc_4662E2:
neg al
add edi, eax
sub ebp, eax
jnz loc_4661C3
loc_4662EE:
pop ecx
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
sub edi, 320h
dec ecx
jnz loc_4661BD
pop ebp
jmp loc_467944
loc_466310:
push ebp
xor eax, eax
mov WorldBoolFlag, eax
mov ebp, 1Eh
mov eax, edi
sub eax, gpBufEnd
jb loc_466370
add eax, 3FFh
shr eax, 8
cmp eax, 2Dh
jg loc_46635F
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_1[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
sub ebp, ecx
mov eax, WorldBoolFlag
shr ecx, 1
add eax, ecx
mov WorldBoolFlag, eax
jmp loc_466370
loc_46635F:
sub edi, 3000h
add esi, 120h
jmp loc_466490
loc_466370:
add edi, ebp
mov ecx, 20h
sub ecx, ebp
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
jz loc_466404
mov edx, ecx
and edx, 2
add esi, edx
shr ecx, 1
jb loc_4663CB
shr ecx, 1
jnb loc_4663A7
mov dl, [esi+1]
mov dl, [ebx+edx]
add esi, 2
mov [edi+1], dl
add edi, 2
loc_4663A7:
test cl, cl
jz loc_4663C9
loc_4663AB:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_4663AB
loc_4663C9:
jmp loc_4663FF
loc_4663CB:
inc esi
inc edi
shr ecx, 1
jnb loc_4663DE
mov dl, [esi]
mov dl, [ebx+edx]
add esi, 2
mov [edi], dl
add edi, 2
loc_4663DE:
test cl, cl
jz loc_4663FF
loc_4663E2:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_4663E2
loc_4663FF:
jmp $+82h
loc_466404:
mov edx, ecx
and edx, 2
add esi, edx
shr ecx, 1
jb loc_466443
shr ecx, 1
jnb loc_466420
mov dl, [esi]
mov dl, [ebx+edx]
add esi, 2
mov [edi], dl
add edi, 2
loc_466420:
test cl, cl
jz loc_466441
loc_466424:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_466424
loc_466441:
jmp loc_466481
loc_466443:
mov dl, [esi]
mov dl, [ebx+edx]
inc esi
mov [edi], dl
inc edi
shr ecx, 1
jnb loc_46645F
mov dl, [esi+1]
mov dl, [ebx+edx]
add esi, 2
mov [edi+1], dl
add edi, 2
loc_46645F:
test cl, cl
jz loc_466481
loc_466463:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_466463
loc_466481:
sub edi, 320h
sub ebp, 2
jge loc_466370
loc_466490:
mov ebp, 2
mov eax, edi
sub eax, gpBufEnd
jb loc_4664E8
add eax, 3FFh
shr eax, 8
cmp eax, 2Ah
jg loc_4664D7
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_2[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
add ebp, ecx
mov eax, WorldBoolFlag
shr ecx, 1
add eax, ecx
mov WorldBoolFlag, eax
jmp loc_4664E8
loc_4664D7:
sub edi, 2D00h
add esi, 100h
jmp loc_46660B
loc_4664E8:
add edi, ebp
mov ecx, 20h
sub ecx, ebp
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
jz loc_46657C
mov edx, ecx
and edx, 2
add esi, edx
shr ecx, 1
jb loc_466543
shr ecx, 1
jnb loc_46651F
mov dl, [esi+1]
mov dl, [ebx+edx]
add esi, 2
mov [edi+1], dl
add edi, 2
loc_46651F:
test cl, cl
jz loc_466541
loc_466523:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_466523
loc_466541:
jmp loc_466577
loc_466543:
inc esi
inc edi
shr ecx, 1
jnb loc_466556
mov dl, [esi]
mov dl, [ebx+edx]
add esi, 2
mov [edi], dl
add edi, 2
loc_466556:
test cl, cl
jz loc_466577
loc_46655A:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_46655A
loc_466577:
jmp $+82h
loc_46657C:
mov edx, ecx
and edx, 2
add esi, edx
shr ecx, 1
jb loc_4665BB
shr ecx, 1
jnb loc_466598
mov dl, [esi]
mov dl, [ebx+edx]
add esi, 2
mov [edi], dl
add edi, 2
loc_466598:
test cl, cl
jz loc_4665B9
loc_46659C:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_46659C
loc_4665B9:
jmp loc_4665F9
loc_4665BB:
mov dl, [esi]
mov dl, [ebx+edx]
inc esi
mov [edi], dl
inc edi
shr ecx, 1
jnb loc_4665D7
mov dl, [esi+1]
mov dl, [ebx+edx]
add esi, 2
mov [edi+1], dl
add edi, 2
loc_4665D7:
test cl, cl
jz loc_4665F9
loc_4665DB:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_4665DB
loc_4665F9:
sub edi, 320h
add ebp, 2
cmp ebp, 20h
jnz loc_4664E8
loc_46660B:
pop ebp
jmp loc_467944
loc_466611:
push ebp
xor eax, eax
mov WorldBoolFlag, eax
mov ebp, 1Eh
mov eax, edi
sub eax, gpBufEnd
jb loc_466671
add eax, 3FFh
shr eax, 8
cmp eax, 2Dh
jg loc_466660
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_1[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
sub ebp, ecx
mov eax, WorldBoolFlag
shr ecx, 1
add eax, ecx
mov WorldBoolFlag, eax
jmp loc_466671
loc_466660:
sub edi, 3000h
add esi, 120h
jmp loc_466791
loc_466671:
mov ecx, 20h
sub ecx, ebp
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
jz loc_466703
shr ecx, 1
jb loc_4666C3
shr ecx, 1
jnb loc_46669F
mov dl, [esi+1]
mov dl, [ebx+edx]
add esi, 2
mov [edi+1], dl
add edi, 2
loc_46669F:
test cl, cl
jz loc_4666C1
loc_4666A3:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_4666A3
loc_4666C1:
jmp loc_4666F7
loc_4666C3:
inc esi
inc edi
shr ecx, 1
jnb loc_4666D6
mov dl, [esi]
mov dl, [ebx+edx]
add esi, 2
mov [edi], dl
add edi, 2
loc_4666D6:
test cl, cl
jz loc_4666F7
loc_4666DA:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_4666DA
loc_4666F7:
mov edx, esi
and edx, 2
add esi, edx
jmp $+82h
loc_466703:
shr ecx, 1
jb loc_46673B
shr ecx, 1
jnb loc_466718
mov dl, [esi]
mov dl, [ebx+edx]
add esi, 2
mov [edi], dl
add edi, 2
loc_466718:
test cl, cl
jz loc_466739
loc_46671C:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_46671C
loc_466739:
jmp loc_466779
loc_46673B:
mov dl, [esi]
mov dl, [ebx+edx]
inc esi
mov [edi], dl
inc edi
shr ecx, 1
jnb loc_466757
mov dl, [esi+1]
mov dl, [ebx+edx]
add esi, 2
mov [edi+1], dl
add edi, 2
loc_466757:
test cl, cl
jz loc_466779
loc_46675B:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_46675B
loc_466779:
mov edx, esi
and edx, 2
add esi, edx
// loc_466780:
sub edi, 320h
add edi, ebp
sub ebp, 2
jge loc_466671
loc_466791:
mov ebp, 2
mov eax, edi
sub eax, gpBufEnd
jb loc_4667E9
add eax, 3FFh
shr eax, 8
cmp eax, 2Ah
jg loc_4667D8
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_2[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
add ebp, ecx
mov eax, WorldBoolFlag
shr ecx, 1
add eax, ecx
mov WorldBoolFlag, eax
jmp loc_4667E9
loc_4667D8:
sub edi, 2D00h
add esi, 100h
jmp loc_46690C
loc_4667E9:
mov ecx, 20h
sub ecx, ebp
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
jz loc_46687B
shr ecx, 1
jb loc_46683B
shr ecx, 1
jnb loc_466817
mov dl, [esi+1]
mov dl, [ebx+edx]
add esi, 2
mov [edi+1], dl
add edi, 2
loc_466817:
test cl, cl
jz loc_466839
loc_46681B:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_46681B
loc_466839:
jmp loc_46686F
loc_46683B:
inc esi
inc edi
shr ecx, 1
jnb loc_46684E
mov dl, [esi]
mov dl, [ebx+edx]
add esi, 2
mov [edi], dl
add edi, 2
loc_46684E:
test cl, cl
jz loc_46686F
loc_466852:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_466852
loc_46686F:
mov edx, esi
and edx, 2
add esi, edx
jmp $+82h
loc_46687B:
shr ecx, 1
jb loc_4668B3
shr ecx, 1
jnb loc_466890
mov dl, [esi]
mov dl, [ebx+edx]
add esi, 2
mov [edi], dl
add edi, 2
loc_466890:
test cl, cl
jz loc_4668B1
loc_466894:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_466894
loc_4668B1:
jmp loc_4668F1
loc_4668B3:
mov dl, [esi]
mov dl, [ebx+edx]
inc esi
mov [edi], dl
inc edi
shr ecx, 1
jnb loc_4668CF
mov dl, [esi+1]
mov dl, [ebx+edx]
add esi, 2
mov [edi+1], dl
add edi, 2
loc_4668CF:
test cl, cl
jz loc_4668F1
loc_4668D3:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_4668D3
loc_4668F1:
mov edx, esi
and edx, 2
add esi, edx
// loc_4668F8:
sub edi, 320h
add edi, ebp
add ebp, 2
cmp ebp, 20h
jnz loc_4667E9
loc_46690C:
pop ebp
jmp loc_467944
loc_466912:
push ebp
xor eax, eax
mov WorldBoolFlag, eax
mov ebp, 1Eh
mov eax, edi
sub eax, gpBufEnd
jb loc_466972
add eax, 3FFh
shr eax, 8
cmp eax, 2Dh
jg loc_466961
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_1[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
sub ebp, ecx
mov eax, WorldBoolFlag
shr ecx, 1
add eax, ecx
mov WorldBoolFlag, eax
jmp loc_466972
loc_466961:
sub edi, 3000h
add esi, 120h
jmp loc_466A92
loc_466972:
add edi, ebp
mov ecx, 20h
sub ecx, ebp
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
jz loc_466A06
mov edx, ecx
and edx, 2
add esi, edx
shr ecx, 1
jb loc_4669CD
shr ecx, 1
jnb loc_4669A9
mov dl, [esi+1]
mov dl, [ebx+edx]
add esi, 2
mov [edi+1], dl
add edi, 2
loc_4669A9:
test cl, cl
jz loc_4669CB
loc_4669AD:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_4669AD
loc_4669CB:
jmp loc_466A01
loc_4669CD:
inc esi
inc edi
shr ecx, 1
jnb loc_4669E0
mov dl, [esi]
mov dl, [ebx+edx]
add esi, 2
mov [edi], dl
add edi, 2
loc_4669E0:
test cl, cl
jz loc_466A01
loc_4669E4:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_4669E4
loc_466A01:
jmp $+82h
loc_466A06:
mov edx, ecx
and edx, 2
add esi, edx
shr ecx, 1
jb loc_466A45
shr ecx, 1
jnb loc_466A22
mov dl, [esi]
mov dl, [ebx+edx]
add esi, 2
mov [edi], dl
add edi, 2
loc_466A22:
test cl, cl
jz loc_466A43
loc_466A26:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_466A26
loc_466A43:
jmp loc_466A83
loc_466A45:
mov dl, [esi]
mov dl, [ebx+edx]
inc esi
mov [edi], dl
inc edi
shr ecx, 1
jnb loc_466A61
mov dl, [esi+1]
mov dl, [ebx+edx]
add esi, 2
mov [edi+1], dl
add edi, 2
loc_466A61:
test cl, cl
jz loc_466A83
loc_466A65:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_466A65
loc_466A83:
sub edi, 320h
sub ebp, 2
jge loc_466972
loc_466A92:
mov ebp, 8
loc_466A97:
cmp edi, gpBufEnd
jb loc_466AA7
add esi, 20h
add edi, 20h
jmp loc_466ACA
loc_466AA7:
mov ecx, 8
loc_466AAC:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_466AAC
loc_466ACA:
sub edi, 320h
cmp edi, gpBufEnd
jb loc_466AE0
add esi, 20h
add edi, 20h
jmp loc_466B02
loc_466AE0:
mov ecx, 8
loc_466AE5:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_466AE5
loc_466B02:
sub edi, 320h
dec ebp
jnz loc_466A97
pop ebp
jmp loc_467944
loc_466B11:
push ebp
xor eax, eax
mov WorldBoolFlag, eax
mov ebp, 1Eh
mov eax, edi
sub eax, gpBufEnd
jb loc_466B71
add eax, 3FFh
shr eax, 8
cmp eax, 2Dh
jg loc_466B60
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_1[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
sub ebp, ecx
mov eax, WorldBoolFlag
shr ecx, 1
add eax, ecx
mov WorldBoolFlag, eax
jmp loc_466B71
loc_466B60:
sub edi, 3000h
add esi, 120h
jmp loc_466C91
loc_466B71:
mov ecx, 20h
sub ecx, ebp
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
jz loc_466C03
shr ecx, 1
jb loc_466BC3
shr ecx, 1
jnb loc_466B9F
mov dl, [esi+1]
mov dl, [ebx+edx]
add esi, 2
mov [edi+1], dl
add edi, 2
loc_466B9F:
test cl, cl
jz loc_466BC1
loc_466BA3:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_466BA3
loc_466BC1:
jmp loc_466BF7
loc_466BC3:
inc esi
inc edi
shr ecx, 1
jnb loc_466BD6
mov dl, [esi]
mov dl, [ebx+edx]
add esi, 2
mov [edi], dl
add edi, 2
loc_466BD6:
test cl, cl
jz loc_466BF7
loc_466BDA:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_466BDA
loc_466BF7:
mov edx, esi
and edx, 2
add esi, edx
jmp $+82h
loc_466C03:
shr ecx, 1
jb loc_466C3B
shr ecx, 1
jnb loc_466C18
mov dl, [esi]
mov dl, [ebx+edx]
add esi, 2
mov [edi], dl
add edi, 2
loc_466C18:
test cl, cl
jz loc_466C39
loc_466C1C:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_466C1C
loc_466C39:
jmp loc_466C79
loc_466C3B:
mov dl, [esi]
mov dl, [ebx+edx]
inc esi
mov [edi], dl
inc edi
shr ecx, 1
jnb loc_466C57
mov dl, [esi+1]
mov dl, [ebx+edx]
add esi, 2
mov [edi+1], dl
add edi, 2
loc_466C57:
test cl, cl
jz loc_466C79
loc_466C5B:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_466C5B
loc_466C79:
mov edx, esi
and edx, 2
add esi, edx
// loc_466C80:
sub edi, 320h
add edi, ebp
sub ebp, 2
jge loc_466B71
loc_466C91:
mov ebp, 8
loc_466C96:
cmp edi, gpBufEnd
jb loc_466CA6
add esi, 20h
add edi, 20h
jmp loc_466CC9
loc_466CA6:
mov ecx, 8
loc_466CAB:
mov eax, [esi]
add esi, 4
mov dl, ah
shr eax, 10h
mov dl, [ebx+edx]
mov [edi+1], dl
mov dl, ah
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-1], dl
jnz loc_466CAB
loc_466CC9:
sub edi, 320h
cmp edi, gpBufEnd
jb loc_466CDF
add esi, 20h
add edi, 20h
jmp loc_466D01
loc_466CDF:
mov ecx, 8
loc_466CE4:
mov eax, [esi]
add esi, 4
mov dl, al
shr eax, 10h
mov dl, [ebx+edx]
mov [edi], dl
mov dl, al
add edi, 4
mov dl, [ebx+edx]
dec ecx
mov [edi-2], dl
jnz loc_466CE4
loc_466D01:
sub edi, 320h
dec ebp
jnz loc_466C96
pop ebp
jmp loc_467944
loc_466D10:
mov edx, 10h
loc_466D15:
cmp edi, gpBufEnd
jb loc_466D25
add esi, 20h
add edi, 20h
jmp loc_466D41
loc_466D25:
mov ecx, 8
loc_466D2A:
mov eax, [esi]
add esi, 4
inc edi
ror eax, 8
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
inc edi
dec ecx
jnz loc_466D2A
loc_466D41:
sub edi, 320h
cmp edi, gpBufEnd
jb loc_466D57
add esi, 20h
add edi, 20h
jmp loc_466D71
loc_466D57:
mov ecx, 8
loc_466D5C:
mov eax, [esi]
add esi, 4
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
add edi, 2
dec ecx
jnz loc_466D5C
loc_466D71:
sub edi, 320h
dec edx
jnz loc_466D15
jmp loc_467944
loc_466D7F:
mov eax, edi
and eax, 1
mov WorldBoolFlag, eax
mov ecx, 20h
loc_466D8E:
push ecx
mov edx, 20h
loc_466D94:
xor eax, eax
mov al, [esi]
inc esi
test al, al
js loc_466E35
sub edx, eax
cmp edi, gpBufEnd
jb loc_466DB1
add esi, eax
add edi, eax
jmp loc_466E2C
loc_466DB1:
mov ecx, eax
mov eax, edi
and eax, 1
cmp eax, WorldBoolFlag
jnz loc_466DF5
shr ecx, 1
jnb loc_466DCC
inc esi
inc edi
test ecx, ecx
jz loc_466E2C
jmp loc_466E05
loc_466DCC:
shr ecx, 1
jnb loc_466DDC
inc esi
inc edi
mov al, [esi]
inc esi
mov [edi], al
inc edi
test ecx, ecx
jz loc_466E2C
loc_466DDC:
mov eax, [esi]
add esi, 4
inc edi
ror eax, 8
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
inc edi
dec ecx
jnz loc_466DDC
jmp loc_466E2C
loc_466DF5:
shr ecx, 1
jnb loc_466E05
mov al, [esi]
inc esi
mov [edi], al
inc edi
test ecx, ecx
jz loc_466E2C
jmp loc_466DCC
loc_466E05:
shr ecx, 1
jnb loc_466E17
mov al, [esi]
add esi, 2
mov [edi], al
add edi, 2
test ecx, ecx
jz loc_466E2C
loc_466E17:
mov eax, [esi]
add esi, 4
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
add edi, 2
dec ecx
jnz loc_466E17
loc_466E2C:
test edx, edx
jz loc_466E41
jmp loc_466D94
loc_466E35:
neg al
add edi, eax
sub edx, eax
jnz loc_466D94
loc_466E41:
pop ecx
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
sub edi, 320h
dec ecx
jnz loc_466D8E
jmp loc_467944
loc_466E62:
xor eax, eax
mov WorldBoolFlag, eax
mov edx, 1Eh
mov eax, edi
sub eax, gpBufEnd
jb loc_466EC1
add eax, 3FFh
shr eax, 8
cmp eax, 2Dh
jg loc_466EB0
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_1[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
sub edx, ecx
mov eax, WorldBoolFlag
shr ecx, 1
add eax, ecx
mov WorldBoolFlag, eax
jmp loc_466EC1
loc_466EB0:
sub edi, 3000h
add esi, 120h
jmp $+83h
loc_466EC1:
add edi, edx
mov ecx, 20h
sub ecx, edx
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
jz loc_466F0A
shr ecx, 2
jnb loc_466EF1
mov ax, [esi+2]
add esi, 4
inc edi
ror eax, 8
mov [edi], al
inc edi
test ecx, ecx
jz loc_466F34
loc_466EF1:
mov eax, [esi]
add esi, 4
inc edi
ror eax, 8
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
inc edi
dec ecx
jnz loc_466EF1
jmp loc_466F34
loc_466F0A:
shr ecx, 2
jnb loc_466F1F
mov ax, [esi+2]
add esi, 4
mov [edi], al
add edi, 2
test ecx, ecx
jz loc_466F34
loc_466F1F:
mov eax, [esi]
add esi, 4
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
add edi, 2
dec ecx
jnz loc_466F1F
loc_466F34:
sub edi, 320h
sub edx, 2
jge loc_466EC1
// loc_466F3F:
mov edx, 2
mov eax, edi
sub eax, gpBufEnd
jb loc_466F97
add eax, 3FFh
shr eax, 8
cmp eax, 2Ah
jg loc_466F86
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_2[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
add edx, ecx
mov eax, WorldBoolFlag
shr ecx, 1
add eax, ecx
mov WorldBoolFlag, eax
jmp loc_466F97
loc_466F86:
sub edi, 2D00h
add esi, 100h
jmp loc_467944
loc_466F97:
add edi, edx
mov ecx, 20h
sub ecx, edx
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
jz loc_466FE0
shr ecx, 2
jnb loc_466FC7
mov ax, [esi+2]
add esi, 4
inc edi
ror eax, 8
mov [edi], al
inc edi
test ecx, ecx
jz loc_467009
loc_466FC7:
mov eax, [esi]
add esi, 4
inc edi
ror eax, 8
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
inc edi
dec ecx
jnz loc_466FC7
jmp loc_467009
loc_466FE0:
shr ecx, 2
jnb loc_466FF4
mov ax, [esi+2]
add esi, 4
mov [edi], al
add edi, 2
dec ecx
jz loc_467009
loc_466FF4:
mov eax, [esi]
add esi, 4
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
add edi, 2
dec ecx
jnz loc_466FF4
loc_467009:
sub edi, 320h
add edx, 2
cmp edx, 20h
jnz loc_466F97
jmp loc_467944
loc_46701C:
push ebp
xor eax, eax
mov WorldBoolFlag, eax
mov edx, 1Eh
mov eax, edi
sub eax, gpBufEnd
jb loc_46707C
add eax, 3FFh
shr eax, 8
cmp eax, 2Dh
jg loc_46706B
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_1[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
sub edx, ecx
mov eax, WorldBoolFlag
shr ecx, 1
add eax, ecx
mov WorldBoolFlag, eax
jmp loc_46707C
loc_46706B:
sub edi, 3000h
add esi, 120h
jmp loc_4670FC
loc_46707C:
mov ecx, 20h
sub ecx, edx
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov ebp, ecx
mov WorldBoolFlag, eax
jz loc_4670C5
shr ecx, 2
jz loc_4670B1
loc_46709A:
mov eax, [esi]
add esi, 4
inc edi
ror eax, 8
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
inc edi
dec ecx
jnz loc_46709A
loc_4670B1:
and ebp, 2
jz loc_4670EF
mov ax, [esi]
add esi, 4
inc edi
ror eax, 8
mov [edi], al
inc edi
jmp loc_4670EF
loc_4670C5:
shr ecx, 2
jz loc_4670DF
loc_4670CA:
mov eax, [esi]
add esi, 4
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
add edi, 2
dec ecx
jnz loc_4670CA
loc_4670DF:
and ebp, 2
jz loc_4670EF
mov ax, [esi]
add esi, 4
mov [edi], al
add edi, 2
loc_4670EF:
sub edi, 320h
add edi, edx
sub edx, 2
jge loc_46707C
loc_4670FC:
mov edx, 2
mov eax, edi
sub eax, gpBufEnd
jb loc_467154
add eax, 3FFh
shr eax, 8
cmp eax, 2Ah
jg loc_467143
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_2[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
add edx, ecx
mov eax, WorldBoolFlag
shr ecx, 1
add eax, ecx
mov WorldBoolFlag, eax
jmp loc_467154
loc_467143:
sub edi, 2D00h
add esi, 100h
jmp loc_4671DB
loc_467154:
mov ecx, 20h
sub ecx, edx
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov ebp, ecx
mov WorldBoolFlag, eax
jz loc_46719D
shr ecx, 2
jz loc_467189
loc_467172:
mov eax, [esi]
add esi, 4
inc edi
ror eax, 8
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
inc edi
dec ecx
jnz loc_467172
loc_467189:
and ebp, 2
jz loc_4671C7
mov ax, [esi]
add esi, 4
inc edi
ror eax, 8
mov [edi], al
inc edi
jmp loc_4671C7
loc_46719D:
shr ecx, 2
jz loc_4671B7
loc_4671A2:
mov eax, [esi]
add esi, 4
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
add edi, 2
dec ecx
jnz loc_4671A2
loc_4671B7:
and ebp, 2
jz loc_4671C7
mov ax, [esi]
add esi, 4
mov [edi], al
add edi, 2
loc_4671C7:
sub edi, 320h
add edi, edx
add edx, 2
cmp edx, 20h
jnz loc_467154
loc_4671DB:
pop ebp
jmp loc_467944
loc_4671E1:
xor eax, eax
mov WorldBoolFlag, eax
mov edx, 1Eh
mov eax, edi
sub eax, gpBufEnd
jb loc_467240
add eax, 3FFh
shr eax, 8
cmp eax, 2Dh
jg loc_46722F
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_1[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
sub edx, ecx
mov eax, WorldBoolFlag
shr ecx, 1
add eax, ecx
mov WorldBoolFlag, eax
jmp loc_467240
loc_46722F:
sub edi, 3000h
add esi, 120h
jmp $+83h
loc_467240:
add edi, edx
mov ecx, 20h
sub ecx, edx
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
jz loc_467289
shr ecx, 2
jnb loc_467270
mov ax, [esi+2]
add esi, 4
inc edi
ror eax, 8
mov [edi], al
inc edi
test ecx, ecx
jz loc_4672B3
loc_467270:
mov eax, [esi]
add esi, 4
inc edi
ror eax, 8
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
inc edi
dec ecx
jnz loc_467270
jmp loc_4672B3
loc_467289:
shr ecx, 2
jnb loc_46729E
mov ax, [esi+2]
add esi, 4
mov [edi], al
test ecx, ecx
lea edi, [edi+2]
jz loc_4672B3
loc_46729E:
mov eax, [esi]
add esi, 4
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
dec ecx
lea edi, [edi+2]
jnz loc_46729E
loc_4672B3:
sub edi, 320h
sub edx, 2
jge loc_467240
// loc_4672BE:
mov edx, 8
loc_4672C3:
cmp edi, gpBufEnd
jb loc_4672D3
add esi, 20h
add edi, 20h
jmp loc_4672EF
loc_4672D3:
mov ecx, 8
loc_4672D8:
mov eax, [esi]
add esi, 4
inc edi
ror eax, 8
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
inc edi
dec ecx
jnz loc_4672D8
loc_4672EF:
sub edi, 320h
cmp edi, gpBufEnd
jb loc_467305
add esi, 20h
add edi, 20h
jmp loc_46731F
loc_467305:
mov ecx, 8
loc_46730A:
mov eax, [esi]
add esi, 4
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
add edi, 2
dec ecx
jnz loc_46730A
loc_46731F:
sub edi, 320h
dec edx
jnz loc_4672C3
jmp loc_467944
loc_46732D:
push ebp
xor eax, eax
mov WorldBoolFlag, eax
mov edx, 1Eh
mov eax, edi
sub eax, gpBufEnd
jb loc_46738D
add eax, 3FFh
shr eax, 8
cmp eax, 2Dh
jg loc_46737C
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_1[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
sub edx, ecx
mov eax, WorldBoolFlag
shr ecx, 1
add eax, ecx
mov WorldBoolFlag, eax
jmp loc_46738D
loc_46737C:
sub edi, 3000h
add esi, 120h
jmp loc_46740D
loc_46738D:
mov ecx, 20h
sub ecx, edx
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov ebp, ecx
mov WorldBoolFlag, eax
jz loc_4673D6
shr ecx, 2
jz loc_4673C2
loc_4673AB:
mov eax, [esi]
add esi, 4
inc edi
ror eax, 8
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
inc edi
dec ecx
jnz loc_4673AB
loc_4673C2:
and ebp, 2
jz loc_467400
mov ax, [esi]
add esi, 4
inc edi
ror eax, 8
mov [edi], al
inc edi
jmp loc_467400
loc_4673D6:
shr ecx, 2
jz loc_4673F0
loc_4673DB:
mov eax, [esi]
add esi, 4
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
add edi, 2
dec ecx
jnz loc_4673DB
loc_4673F0:
and ebp, 2
jz loc_467400
mov ax, [esi]
add esi, 4
mov [edi], al
add edi, 2
loc_467400:
sub edi, 320h
add edi, edx
sub edx, 2
jge loc_46738D
loc_46740D:
mov edx, 8
loc_467412:
cmp edi, gpBufEnd
jb loc_467422
add esi, 20h
add edi, 20h
jmp loc_46743E
loc_467422:
mov ecx, 8
loc_467427:
mov eax, [esi]
add esi, 4
inc edi
ror eax, 8
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
inc edi
dec ecx
jnz loc_467427
loc_46743E:
sub edi, 320h
cmp edi, gpBufEnd
jb loc_467454
add esi, 20h
add edi, 20h
jmp loc_46746E
loc_467454:
mov ecx, 8
loc_467459:
mov eax, [esi]
add esi, 4
mov [edi], al
add edi, 2
ror eax, 10h
mov [edi], al
add edi, 2
dec ecx
jnz loc_467459
loc_46746E:
sub edi, 320h
dec edx
jnz loc_467412
pop ebp
jmp loc_467944
loc_46747D:
mov edx, 10h
xor eax, eax
loc_467484:
cmp edi, gpBufEnd
jb loc_467494
add esi, 20h
add edi, 20h
jmp loc_4674A5
loc_467494:
mov ecx, 8
loc_467499:
mov [edi+1], al
mov [edi+3], al
add edi, 4
dec ecx
jnz loc_467499
loc_4674A5:
sub edi, 320h
cmp edi, gpBufEnd
jb loc_4674BB
add esi, 20h
add edi, 20h
jmp loc_4674CB
loc_4674BB:
mov ecx, 8
loc_4674C0:
mov [edi], al
mov [edi+2], al
add edi, 4
dec ecx
jnz loc_4674C0
loc_4674CB:
sub edi, 320h
dec edx
jnz loc_467484
jmp loc_467944
loc_4674D9:
mov eax, edi
and eax, 1
mov WorldBoolFlag, eax
mov ecx, 20h
loc_4674E8:
push ecx
mov edx, 20h
loc_4674EE:
xor eax, eax
mov al, [esi]
inc esi
test al, al
js loc_46756C
sub edx, eax
cmp edi, gpBufEnd
jb loc_467507
add esi, eax
add edi, eax
jmp loc_467566
loc_467507:
mov ecx, eax
add esi, ecx
mov eax, edi
and eax, 1
cmp eax, WorldBoolFlag
jnz loc_46753F
xor eax, eax
shr ecx, 1
jnb loc_467525
inc edi
test ecx, ecx
jz loc_467566
jmp loc_46754E
loc_467525:
shr ecx, 1
jnb loc_467531
inc edi
mov [edi], al
inc edi
test ecx, ecx
jz loc_467566
loc_467531:
mov [edi+1], al
mov [edi+3], al
add edi, 4
dec ecx
jnz loc_467531
jmp loc_467566
loc_46753F:
xor eax, eax
shr ecx, 1
jnb loc_46754E
mov [edi], al
inc edi
test ecx, ecx
jz loc_467566
jmp loc_467525
loc_46754E:
shr ecx, 1
jnb loc_46755B
mov [edi], al
add edi, 2
test ecx, ecx
jz loc_467566
loc_46755B:
mov [edi], al
mov [edi+2], al
add edi, 4
dec ecx
jnz loc_46755B
loc_467566:
test edx, edx
jz loc_467578
jmp loc_4674EE
loc_46756C:
neg al
add edi, eax
sub edx, eax
jnz loc_4674EE
loc_467578:
pop ecx
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
sub edi, 320h
dec ecx
jnz loc_4674E8
jmp loc_467944
loc_467599:
xor eax, eax
mov WorldBoolFlag, eax
mov edx, 1Eh
loc_4675A5:
cmp edi, gpBufEnd
jb loc_4675B7
add esi, 20h
sub esi, edx
add edi, 20h
jmp loc_467608
loc_4675B7:
add edi, edx
mov ecx, 20h
sub ecx, edx
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
jz loc_4675ED
xor eax, eax
shr ecx, 2
jnb loc_4675DF
inc edi
mov [edi], al
inc edi
test ecx, ecx
jz loc_467608
loc_4675DF:
mov [edi+1], al
mov [edi+3], al
add edi, 4
dec ecx
jnz loc_4675DF
jmp loc_467608
loc_4675ED:
xor eax, eax
shr ecx, 2
jnb loc_4675FD
mov [edi], al
add edi, 2
test ecx, ecx
jz loc_467608
loc_4675FD:
mov [edi], al
mov [edi+2], al
add edi, 4
dec ecx
jnz loc_4675FD
loc_467608:
sub edi, 320h
test edx, edx
jz loc_467617
sub edx, 2
jmp loc_4675A5
loc_467617:
mov edx, 2
loc_46761C:
cmp edi, gpBufEnd
jb loc_46762E
add esi, 20h
sub esi, edx
add edi, 20h
jmp loc_46767F
loc_46762E:
add edi, edx
mov ecx, 20h
sub ecx, edx
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
jz loc_467664
xor eax, eax
shr ecx, 2
jnb loc_467656
inc edi
mov [edi], al
inc edi
test ecx, ecx
jz loc_46767F
loc_467656:
mov [edi+1], al
mov [edi+3], al
add edi, 4
dec ecx
jnz loc_467656
jmp loc_46767F
loc_467664:
xor eax, eax
shr ecx, 2
jnb loc_467674
mov [edi], al
add edi, 2
test ecx, ecx
jz loc_46767F
loc_467674:
mov [edi], al
mov [edi+2], al
add edi, 4
dec ecx
jnz loc_467674
loc_46767F:
sub edi, 320h
add edx, 2
cmp edx, 20h
jnz loc_46761C
jmp loc_467944
loc_467692:
xor eax, eax
mov WorldBoolFlag, eax
mov edx, 1Eh
loc_46769E:
cmp edi, gpBufEnd
jb loc_4676B2
add esi, 20h
sub esi, edx
add edi, 20h
sub edi, edx
jmp loc_467701
loc_4676B2:
mov ecx, 20h
sub ecx, edx
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
jz loc_4676E6
xor eax, eax
shr ecx, 2
jnb loc_4676D8
inc edi
mov [edi], al
inc edi
test ecx, ecx
jz loc_467701
loc_4676D8:
mov [edi+1], al
mov [edi+3], al
add edi, 4
dec ecx
jnz loc_4676D8
jmp loc_467701
loc_4676E6:
xor eax, eax
shr ecx, 2
jnb loc_4676F6
mov [edi], al
add edi, 2
test ecx, ecx
jz loc_467701
loc_4676F6:
mov [edi], al
mov [edi+2], al
add edi, 4
dec ecx
jnz loc_4676F6
loc_467701:
sub edi, 320h
test edx, edx
jz loc_467712
add edi, edx
sub edx, 2
jmp loc_46769E
loc_467712:
mov edx, 2
loc_467717:
cmp edi, gpBufEnd
jb loc_46772B
add esi, 20h
sub esi, edx
add edi, 20h
sub edi, edx
jmp loc_46777A
loc_46772B:
mov ecx, 20h
sub ecx, edx
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
jz loc_46775F
xor eax, eax
shr ecx, 2
jnb loc_467751
inc edi
mov [edi], al
inc edi
test ecx, ecx
jz loc_46777A
loc_467751:
mov [edi+1], al
mov [edi+3], al
add edi, 4
dec ecx
jnz loc_467751
jmp loc_46777A
loc_46775F:
xor eax, eax
shr ecx, 2
jnb loc_46776F
mov [edi], al
add edi, 2
test ecx, ecx
jz loc_46777A
loc_46776F:
mov [edi], al
mov [edi+2], al
add edi, 4
dec ecx
jnz loc_46776F
loc_46777A:
sub edi, 320h
add edi, edx
add edx, 2
cmp edx, 20h
jnz loc_467717
jmp loc_467944
loc_46778F:
xor eax, eax
mov WorldBoolFlag, eax
mov edx, 1Eh
loc_46779B:
cmp edi, gpBufEnd
jb loc_4677AD
add esi, 20h
sub esi, edx
add edi, 20h
jmp loc_4677FE
loc_4677AD:
add edi, edx
mov ecx, 20h
sub ecx, edx
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
jz loc_4677E3
xor eax, eax
shr ecx, 2
jnb loc_4677D5
inc edi
mov [edi], al
inc edi
test ecx, ecx
jz loc_4677FE
loc_4677D5:
mov [edi+1], al
mov [edi+3], al
add edi, 4
dec ecx
jnz loc_4677D5
jmp loc_4677FE
loc_4677E3:
xor eax, eax
shr ecx, 2
jnb loc_4677F3
mov [edi], al
add edi, 2
test ecx, ecx
jz loc_4677FE
loc_4677F3:
mov [edi], al
mov [edi+2], al
add edi, 4
dec ecx
jnz loc_4677F3
loc_4677FE:
sub edi, 320h
test edx, edx
jz loc_46780D
sub edx, 2
jmp loc_46779B
loc_46780D:
mov edx, 8
loc_467812:
cmp edi, gpBufEnd
jb loc_467822
add esi, 20h
add edi, 20h
jmp loc_467835
loc_467822:
mov ecx, 8
xor eax, eax
loc_467829:
mov [edi+1], al
mov [edi+3], al
add edi, 4
dec ecx
jnz loc_467829
loc_467835:
sub edi, 320h
cmp edi, gpBufEnd
jb loc_46784B
add esi, 20h
add edi, 20h
jmp loc_46785D
loc_46784B:
mov ecx, 8
xor eax, eax
loc_467852:
mov [edi], al
mov [edi+2], al
add edi, 4
dec ecx
jnz loc_467852
loc_46785D:
sub edi, 320h
dec edx
jnz loc_467812
jmp loc_467944
loc_46786B:
xor eax, eax
mov WorldBoolFlag, eax
mov edx, 1Eh
loc_467877:
cmp edi, gpBufEnd
jb loc_46788B
add esi, 20h
sub esi, edx
add edi, 20h
sub edi, edx
jmp loc_4678DA
loc_46788B:
mov ecx, 20h
sub ecx, edx
mov eax, WorldBoolFlag
inc eax
and eax, 1
mov WorldBoolFlag, eax
jz loc_4678BF
xor eax, eax
shr ecx, 2
jnb loc_4678B1
inc edi
mov [edi], al
inc edi
test ecx, ecx
jz loc_4678DA
loc_4678B1:
mov [edi+1], al
mov [edi+3], al
add edi, 4
dec ecx
jnz loc_4678B1
jmp loc_4678DA
loc_4678BF:
xor eax, eax
shr ecx, 2
jnb loc_4678CF
mov [edi], al
add edi, 2
test ecx, ecx
jz loc_4678DA
loc_4678CF:
mov [edi], al
mov [edi+2], al
add edi, 4
dec ecx
jnz loc_4678CF
loc_4678DA:
sub edi, 320h
test edx, edx
jz loc_4678EB
add edi, edx
sub edx, 2
jmp loc_467877
loc_4678EB:
mov edx, 8
loc_4678F0:
cmp edi, gpBufEnd
jb loc_467900
add esi, 20h
add edi, 20h
jmp loc_467913
loc_467900:
mov ecx, 8
xor eax, eax
loc_467907:
mov [edi+1], al
mov [edi+3], al
add edi, 4
dec ecx
jnz loc_467907
loc_467913:
sub edi, 320h
cmp edi, gpBufEnd
jb loc_467929
add esi, 20h
add edi, 20h
jmp loc_46793B
loc_467929:
mov ecx, 8
xor eax, eax
loc_467930:
mov [edi], al
mov [edi+2], al
add edi, 4
dec ecx
jnz loc_467930
loc_46793B:
sub edi, 320h
dec edx
jnz loc_4678F0
loc_467944:
pop esi
pop edi
pop edx
pop ebx
retn
}
}
__declspec(naked) void drawBottomArchesLowerScreen(BYTE *pBuff, unsigned int *pMask)
{
__asm {
push ebx
push edi
push esi
mov edi, offset SpeedFrameTbl
mov gpCelFrame, edi
mov edi, ecx
mov gpDrawMask, edx
mov eax, light_table_index
test al, al
jz loc_467A58
cmp al, lightmax
jz loc_467AB8
mov eax, level_cel_block
and eax, 8000h
jnz loc_4679EC
mov ebx, pDungeonCels
mov esi, ebx
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 2
add ebx, eax
add esi, [ebx]
mov ebx, light_table_index
shl ebx, 8
add ebx, pLightTbl
mov eax, level_cel_block
mov al, ah
shr eax, 4
and eax, 0Fh
jz loc_467B43
cmp ax, 1
jz loc_467B8F
cmp ax, 2
jz loc_467C20
cmp ax, 3
jz loc_467D5B
cmp ax, 4
jz loc_467E99
jmp loc_467F8A
loc_4679EC:
mov esi, gpCelFrame
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 4
add eax, light_table_index
shl eax, 2
add esi, eax
mov eax, [esi]
mov esi, pSpeedCels
add esi, eax
mov eax, level_cel_block
mov al, ah
shr eax, 4
and eax, 0Fh
loc_467A21:
cmp ax, 8
jz loc_468086
cmp ax, 9
jz loc_4680D1
cmp ax, 0Ah
jz loc_468161
cmp ax, 0Bh
jz loc_468268
cmp ax, 0Ch
jz loc_468372
jmp loc_468448
loc_467A58:
mov eax, level_cel_block
and eax, 8000h
jz loc_467A8A
mov esi, gpCelFrame
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 6
add esi, eax
mov eax, level_cel_block
and eax, 0F000h
add eax, [esi]
mov level_cel_block, eax
loc_467A8A:
mov ebx, pDungeonCels
mov esi, ebx
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 2
add ebx, eax
add esi, [ebx]
mov eax, level_cel_block
mov al, ah
shr eax, 4
and eax, 7
add eax, 8
jmp loc_467A21
loc_467AB8:
mov eax, level_cel_block
and eax, 8000h
jz loc_467AEA
mov esi, gpCelFrame
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 6
add esi, eax
mov eax, level_cel_block
and eax, 0F000h
add eax, [esi]
mov level_cel_block, eax
loc_467AEA:
mov ebx, pDungeonCels
mov esi, ebx
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 2
add ebx, eax
add esi, [ebx]
mov eax, level_cel_block
mov al, ah
shr eax, 4
and eax, 7
jz loc_468529
cmp ax, 1
jz loc_468573
cmp ax, 2
jz loc_468604
cmp ax, 3
jz loc_468696
cmp ax, 4
jz loc_46872C
jmp loc_4687CB
loc_467B43:
push ebp
mov ebp, 20h
loc_467B49:
cmp edi, gpBufEnd
jb loc_467B59
add esi, 20h
add edi, 20h
jmp loc_467B73
loc_467B59:
mov eax, gpDrawMask
mov edx, [eax]
mov ecx, 20h
loc_467B65:
mov al, [esi]
inc esi
shl edx, 1
jnb loc_467B6F
xlat
mov [edi], al
loc_467B6F:
inc edi
dec ecx
jnz loc_467B65
loc_467B73:
sub edi, 320h
mov eax, gpDrawMask
sub eax, 4
mov gpDrawMask, eax
dec ebp
jnz loc_467B49
pop ebp
jmp loc_468867
loc_467B8F:
mov ecx, 20h
loc_467B94:
push ecx
mov eax, gpDrawMask
mov eax, [eax]
mov gdwCurrentMask, eax
mov edx, 20h
loc_467BA6:
xor eax, eax
mov al, [esi]
inc esi
test al, al
js loc_467BE3
sub edx, eax
cmp edi, gpBufEnd
jb loc_467BBF
add esi, eax
add edi, eax
jmp loc_467BDD
loc_467BBF:
mov ecx, eax
push edx
mov edx, gdwCurrentMask
loc_467BC8:
mov al, [esi]
inc esi
shl edx, 1
jnb loc_467BD2
xlat
mov [edi], al
loc_467BD2:
inc edi
dec ecx
jnz loc_467BC8
mov gdwCurrentMask, edx
pop edx
loc_467BDD:
test edx, edx
jz loc_467C00
jmp loc_467BA6
loc_467BE3:
neg al
add edi, eax
mov ecx, eax
and ecx, 1Fh
jz loc_467BFC
push eax
mov eax, gdwCurrentMask
shl eax, cl
mov gdwCurrentMask, eax
pop eax
loc_467BFC:
sub edx, eax
jnz loc_467BA6
loc_467C00:
pop ecx
sub edi, 320h
mov eax, gpDrawMask
sub eax, 4
mov gpDrawMask, eax
dec ecx
jnz loc_467B94
jmp loc_468867
loc_467C20:
mov edx, 1Eh
mov eax, edi
sub eax, gpBufEnd
jb loc_467C67
add eax, 3FFh
shr eax, 8
cmp eax, 2Dh
jg loc_467C59
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_1[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
sub edx, ecx
jmp loc_467C67
loc_467C59:
sub edi, 3000h
add esi, 120h
jmp loc_467CB8
loc_467C67:
add edi, edx
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_467C90
mov ax, [esi+2]
add esi, 4
xlat
ror ax, 8
xlat
ror ax, 8
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_467CAD
loc_467C90:
mov eax, [esi]
add esi, 4
xlat
ror eax, 8
xlat
ror eax, 8
xlat
ror eax, 8
xlat
ror eax, 8
mov [edi], eax
add edi, 4
dec ecx
jnz loc_467C90
loc_467CAD:
sub edi, 320h
sub edx, 2
jge loc_467C67
loc_467CB8:
mov edx, 2
mov eax, edi
sub eax, gpBufEnd
jb loc_467D02
add eax, 3FFh
shr eax, 8
cmp eax, 2Ah
jg loc_467CF1
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_2[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
add edx, ecx
jmp loc_467D02
loc_467CF1:
sub edi, 2D00h
add esi, 100h
jmp loc_468867
loc_467D02:
add edi, edx
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_467D2B
mov ax, [esi+2]
add esi, 4
xlat
ror ax, 8
xlat
ror ax, 8
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_467D48
loc_467D2B:
mov eax, [esi]
add esi, 4
xlat
ror eax, 8
xlat
ror eax, 8
xlat
ror eax, 8
xlat
ror eax, 8
mov [edi], eax
add edi, 4
dec ecx
jnz loc_467D2B
loc_467D48:
sub edi, 320h
add edx, 2
cmp edx, 20h
jnz loc_467D02
jmp loc_468867
loc_467D5B:
push ebp
mov edx, 1Eh
mov eax, edi
sub eax, gpBufEnd
jb loc_467DA3
add eax, 3FFh
shr eax, 8
cmp eax, 2Dh
jg loc_467D95
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_1[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
sub edx, ecx
jmp loc_467DA3
loc_467D95:
sub edi, 3000h
add esi, 120h
jmp loc_467DF6
loc_467DA3:
mov ecx, 20h
sub ecx, edx
mov ebp, ecx
shr ecx, 2
jz loc_467DCE
loc_467DB1:
mov eax, [esi]
add esi, 4
xlat
ror eax, 8
xlat
ror eax, 8
xlat
ror eax, 8
xlat
ror eax, 8
mov [edi], eax
add edi, 4
dec ecx
jnz loc_467DB1
loc_467DCE:
and ebp, 2
jz loc_467DE9
mov ax, [esi]
add esi, 4
xlat
ror ax, 8
xlat
ror ax, 8
mov [edi], ax
add edi, 2
loc_467DE9:
sub edi, 320h
add edi, edx
sub edx, 2
jge loc_467DA3
loc_467DF6:
mov edx, 2
mov eax, edi
sub eax, gpBufEnd
jb loc_467E3D
add eax, 3FFh
shr eax, 8
cmp eax, 2Ah
jg loc_467E2F
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_2[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
add edx, ecx
jmp loc_467E3D
loc_467E2F:
sub edi, 2D00h
add esi, 100h
jmp loc_467E93
loc_467E3D:
mov ecx, 20h
sub ecx, edx
mov ebp, ecx
shr ecx, 2
jz loc_467E68
loc_467E4B:
mov eax, [esi]
add esi, 4
xlat
ror eax, 8
xlat
ror eax, 8
xlat
ror eax, 8
xlat
ror eax, 8
mov [edi], eax
add edi, 4
dec ecx
jnz loc_467E4B
loc_467E68:
and ebp, 2
jz loc_467E83
mov ax, [esi]
add esi, 2
xlat
ror ax, 8
xlat
ror ax, 8
mov [edi], ax
add edi, 2
loc_467E83:
sub edi, 320h
add edi, edx
add edx, 2
cmp edx, 20h
jnz loc_467E3D
loc_467E93:
pop ebp
jmp loc_468867
loc_467E99:
mov edx, 1Eh
mov eax, edi
sub eax, gpBufEnd
jb loc_467EE0
add eax, 3FFh
shr eax, 8
cmp eax, 2Dh
jg loc_467ED2
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_1[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
sub edx, ecx
jmp loc_467EE0
loc_467ED2:
sub edi, 3000h
add esi, 120h
jmp loc_467F31
loc_467EE0:
add edi, edx
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_467F09
mov ax, [esi+2]
add esi, 4
xlat
ror ax, 8
xlat
ror ax, 8
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_467F26
loc_467F09:
mov eax, [esi]
add esi, 4
xlat
ror eax, 8
xlat
ror eax, 8
xlat
ror eax, 8
xlat
ror eax, 8
mov [edi], eax
add edi, 4
dec ecx
jnz loc_467F09
loc_467F26:
sub edi, 320h
sub edx, 2
jge loc_467EE0
loc_467F31:
mov eax, gpDrawMask
sub eax, 40h
mov gpDrawMask, eax
mov edx, 10h
loc_467F43:
cmp edi, gpBufEnd
jb loc_467F53
add esi, 20h
add edi, 20h
jmp loc_467F6F
loc_467F53:
push edx
mov eax, gpDrawMask
mov edx, [eax]
mov ecx, 20h
loc_467F60:
mov al, [esi]
inc esi
shl edx, 1
jnb loc_467F6A
xlat
mov [edi], al
loc_467F6A:
inc edi
dec ecx
jnz loc_467F60
pop edx
loc_467F6F:
sub edi, 320h
mov eax, gpDrawMask
sub eax, 4
mov gpDrawMask, eax
dec edx
jnz loc_467F43
jmp loc_468867
loc_467F8A:
push ebp
mov edx, 1Eh
mov eax, edi
sub eax, gpBufEnd
jb loc_467FD2
add eax, 3FFh
shr eax, 8
cmp eax, 2Dh
jg loc_467FC4
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_1[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
sub edx, ecx
jmp loc_467FD2
loc_467FC4:
sub edi, 3000h
add esi, 120h
jmp loc_468025
loc_467FD2:
mov ecx, 20h
sub ecx, edx
mov ebp, ecx
shr ecx, 2
jz loc_467FFD
loc_467FE0:
mov eax, [esi]
add esi, 4
xlat
ror eax, 8
xlat
ror eax, 8
xlat
ror eax, 8
xlat
ror eax, 8
mov [edi], eax
add edi, 4
dec ecx
jnz loc_467FE0
loc_467FFD:
and ebp, 2
jz loc_468018
mov ax, [esi]
add esi, 4
xlat
ror ax, 8
xlat
ror ax, 8
mov [edi], ax
add edi, 2
loc_468018:
sub edi, 320h
add edi, edx
sub edx, 2
jge loc_467FD2
loc_468025:
mov eax, gpDrawMask
sub eax, 40h
mov gpDrawMask, eax
mov edx, 10h
loc_468037:
cmp edi, gpBufEnd
jb loc_468047
add esi, 20h
add edi, 20h
jmp loc_46806A
loc_468047:
push edx
mov eax, gpDrawMask
mov edx, [eax]
mov ecx, 20h
loc_468054:
mov al, [esi]
inc esi
shl edx, 1
jnb loc_46805E
xlat
mov [edi], al
loc_46805E:
inc edi
dec ecx
jnz loc_468054
mov ebp, esi
and ebp, 2
add esi, ebp
pop edx
loc_46806A:
sub edi, 320h
mov eax, gpDrawMask
sub eax, 4
mov gpDrawMask, eax
dec edx
jnz loc_468037
pop ebp
jmp loc_468867
loc_468086:
mov edx, 20h
loc_46808B:
cmp edi, gpBufEnd
jb loc_46809B
add esi, 20h
add edi, 20h
jmp loc_4680B6
loc_46809B:
push edx
mov eax, gpDrawMask
mov edx, [eax]
mov ecx, 20h
loc_4680A8:
mov al, [esi]
inc esi
shl edx, 1
jnb loc_4680B1
mov [edi], al
loc_4680B1:
inc edi
dec ecx
jnz loc_4680A8
pop edx
loc_4680B6:
sub edi, 320h
mov eax, gpDrawMask
sub eax, 4
mov gpDrawMask, eax
dec edx
jnz loc_46808B
jmp loc_468867
loc_4680D1:
mov ecx, 20h
loc_4680D6:
push ecx
mov eax, gpDrawMask
mov eax, [eax]
mov gdwCurrentMask, eax
mov edx, 20h
loc_4680E8:
xor eax, eax
mov al, [esi]
inc esi
test al, al
js loc_468124
sub edx, eax
cmp edi, gpBufEnd
jb loc_468101
add esi, eax
add edi, eax
jmp loc_46811E
loc_468101:
mov ecx, eax
push edx
mov edx, gdwCurrentMask
loc_46810A:
mov al, [esi]
inc esi
shl edx, 1
jnb loc_468113
mov [edi], al
loc_468113:
inc edi
dec ecx
jnz loc_46810A
mov gdwCurrentMask, edx
pop edx
loc_46811E:
test edx, edx
jz loc_468141
jmp loc_4680E8
loc_468124:
neg al
add edi, eax
mov ecx, eax
and ecx, 1Fh
jz loc_46813D
mov ebx, gdwCurrentMask
shl ebx, cl
mov gdwCurrentMask, ebx
loc_46813D:
sub edx, eax
jnz loc_4680E8
loc_468141:
pop ecx
sub edi, 320h
mov eax, gpDrawMask
sub eax, 4
mov gpDrawMask, eax
dec ecx
jnz loc_4680D6
jmp loc_468867
loc_468161:
mov edx, 1Eh
mov eax, edi
sub eax, gpBufEnd
jb loc_4681A8
add eax, 3FFh
shr eax, 8
cmp eax, 2Dh
jg loc_46819A
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_1[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
sub edx, ecx
jmp loc_4681A8
loc_46819A:
sub edi, 3000h
add esi, 120h
jmp loc_4681DF
loc_4681A8:
add edi, edx
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_4681C7
mov ax, [esi+2]
add esi, 4
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_4681D4
loc_4681C7:
mov eax, [esi]
add esi, 4
mov [edi], eax
add edi, 4
dec ecx
jnz loc_4681C7
loc_4681D4:
sub edi, 320h
sub edx, 2
jge loc_4681A8
loc_4681DF:
mov edx, 2
mov eax, edi
sub eax, gpBufEnd
jb loc_468229
add eax, 3FFh
shr eax, 8
cmp eax, 2Ah
jg loc_468218
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_2[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
add edx, ecx
jmp loc_468229
loc_468218:
sub edi, 2D00h
add esi, 100h
jmp loc_468867
loc_468229:
add edi, edx
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_468248
mov ax, [esi+2]
add esi, 4
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_468255
loc_468248:
mov eax, [esi]
add esi, 4
mov [edi], eax
add edi, 4
dec ecx
jnz loc_468248
loc_468255:
sub edi, 320h
add edx, 2
cmp edx, 20h
jnz loc_468229
jmp loc_468867
loc_468268:
push ebp
mov edx, 1Eh
mov eax, edi
sub eax, gpBufEnd
jb loc_4682B0
add eax, 3FFh
shr eax, 8
cmp eax, 2Dh
jg loc_4682A2
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_1[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
sub edx, ecx
jmp loc_4682B0
loc_4682A2:
sub edi, 3000h
add esi, 120h
jmp loc_4682E9
loc_4682B0:
mov ecx, 20h
sub ecx, edx
mov ebp, ecx
shr ecx, 2
jz loc_4682CB
loc_4682BE:
mov eax, [esi]
add esi, 4
mov [edi], eax
add edi, 4
dec ecx
jnz loc_4682BE
loc_4682CB:
and ebp, 2
jz loc_4682DC
mov ax, [esi]
add esi, 4
mov [edi], ax
add edi, 2
loc_4682DC:
sub edi, 320h
add edi, edx
sub edx, 2
jge loc_4682B0
loc_4682E9:
mov edx, 2
mov eax, edi
sub eax, gpBufEnd
jb loc_468330
add eax, 3FFh
shr eax, 8
cmp eax, 2Ah
jg loc_468322
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_2[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
add edx, ecx
jmp loc_468330
loc_468322:
sub edi, 2D00h
add esi, 100h
jmp loc_46836C
loc_468330:
mov ecx, 20h
sub ecx, edx
mov ebp, ecx
shr ecx, 2
jz loc_46834B
loc_46833E:
mov eax, [esi]
add esi, 4
mov [edi], eax
add edi, 4
dec ecx
jnz loc_46833E
loc_46834B:
and ebp, 2
jz loc_46835C
mov ax, [esi]
add esi, 4
mov [edi], ax
add edi, 2
loc_46835C:
sub edi, 320h
add edi, edx
add edx, 2
cmp edx, 20h
jnz loc_468330
loc_46836C:
pop ebp
jmp loc_468867
loc_468372:
mov edx, 1Eh
mov eax, edi
sub eax, gpBufEnd
jb loc_4683B9
add eax, 3FFh
shr eax, 8
cmp eax, 2Dh
jg loc_4683AB
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_1[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
sub edx, ecx
jmp loc_4683B9
loc_4683AB:
sub edi, 3000h
add esi, 120h
jmp loc_4683F0
loc_4683B9:
add edi, edx
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_4683D8
mov ax, [esi+2]
add esi, 4
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_4683E5
loc_4683D8:
mov eax, [esi]
add esi, 4
mov [edi], eax
add edi, 4
dec ecx
jnz loc_4683D8
loc_4683E5:
sub edi, 320h
sub edx, 2
jge loc_4683B9
loc_4683F0:
mov eax, gpDrawMask
sub eax, 40h
mov gpDrawMask, eax
mov edx, 10h
loc_468402:
cmp edi, gpBufEnd
jb loc_468412
add esi, 20h
add edi, 20h
jmp loc_46842D
loc_468412:
push edx
mov eax, gpDrawMask
mov edx, [eax]
mov ecx, 20h
loc_46841F:
mov al, [esi]
inc esi
shl edx, 1
jnb loc_468428
mov [edi], al
loc_468428:
inc edi
dec ecx
jnz loc_46841F
pop edx
loc_46842D:
sub edi, 320h
mov eax, gpDrawMask
sub eax, 4
mov gpDrawMask, eax
dec edx
jnz loc_468402
jmp loc_468867
loc_468448:
push ebp
mov edx, 1Eh
mov eax, edi
sub eax, gpBufEnd
jb loc_468490
add eax, 3FFh
shr eax, 8
cmp eax, 2Dh
jg loc_468482
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_1[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
sub edx, ecx
jmp loc_468490
loc_468482:
sub edi, 3000h
add esi, 120h
jmp loc_4684C9
loc_468490:
mov ecx, 20h
sub ecx, edx
mov ebp, ecx
shr ecx, 2
jz loc_4684AB
loc_46849E:
mov eax, [esi]
add esi, 4
mov [edi], eax
add edi, 4
dec ecx
jnz loc_46849E
loc_4684AB:
and ebp, 2
jz loc_4684BC
mov ax, [esi]
add esi, 4
mov [edi], ax
add edi, 2
loc_4684BC:
sub edi, 320h
add edi, edx
sub edx, 2
jge loc_468490
loc_4684C9:
mov eax, gpDrawMask
sub eax, 40h
mov gpDrawMask, eax
mov edx, 10h
loc_4684DB:
cmp edi, gpBufEnd
jb loc_4684EB
add esi, 20h
add edi, 20h
jmp loc_46850D
loc_4684EB:
push edx
mov eax, gpDrawMask
mov edx, [eax]
mov ecx, 20h
loc_4684F8:
mov al, [esi]
inc esi
shl edx, 1
jnb loc_468501
mov [edi], al
loc_468501:
inc edi
dec ecx
jnz loc_4684F8
mov ebp, esi
and ebp, 2
add esi, ebp
pop edx
loc_46850D:
sub edi, 320h
mov eax, gpDrawMask
sub eax, 4
mov gpDrawMask, eax
dec edx
jnz loc_4684DB
pop ebp
jmp loc_468867
loc_468529:
mov edx, 20h
loc_46852E:
cmp edi, gpBufEnd
jb loc_46853E
add esi, 20h
add edi, 20h
jmp loc_468558
loc_46853E:
push edx
mov eax, gpDrawMask
mov edx, [eax]
xor eax, eax
mov ecx, 20h
loc_46854D:
shl edx, 1
jnb loc_468553
mov [edi], al
loc_468553:
inc edi
dec ecx
jnz loc_46854D
pop edx
loc_468558:
sub edi, 320h
mov eax, gpDrawMask
sub eax, 4
mov gpDrawMask, eax
dec edx
jnz loc_46852E
jmp loc_468867
loc_468573:
mov ecx, 20h
loc_468578:
push ecx
mov eax, gpDrawMask
mov eax, [eax]
mov gdwCurrentMask, eax
mov edx, 20h
loc_46858A:
xor eax, eax
mov al, [esi]
inc esi
test al, al
js loc_4685C7
sub edx, eax
cmp edi, gpBufEnd
jb loc_4685A3
add esi, eax
add edi, eax
jmp loc_4685C1
loc_4685A3:
mov ecx, eax
add esi, ecx
push edx
mov edx, gdwCurrentMask
xor eax, eax
loc_4685B0:
shl edx, 1
jnb loc_4685B6
mov [edi], al
loc_4685B6:
inc edi
dec ecx
jnz loc_4685B0
mov gdwCurrentMask, edx
pop edx
loc_4685C1:
test edx, edx
jz loc_4685E4
jmp loc_46858A
loc_4685C7:
neg al
add edi, eax
mov ecx, eax
and ecx, 1Fh
jz loc_4685E0
mov ebx, gdwCurrentMask
shl ebx, cl
mov gdwCurrentMask, ebx
loc_4685E0:
sub edx, eax
jnz loc_46858A
loc_4685E4:
pop ecx
sub edi, 320h
mov eax, gpDrawMask
sub eax, 4
mov gpDrawMask, eax
dec ecx
jnz loc_468578
jmp loc_468867
loc_468604:
mov edx, 1Eh
xor eax, eax
loc_46860B:
cmp edi, gpBufEnd
jb loc_46861D
add esi, 20h
sub esi, edx
add edi, 20h
jmp loc_46863D
loc_46861D:
add edi, edx
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_468635
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_46863D
loc_468635:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_468635
loc_46863D:
sub edi, 320h
test edx, edx
jz loc_46864C
sub edx, 2
jmp loc_46860B
loc_46864C:
mov edx, 2
loc_468651:
cmp edi, gpBufEnd
jb loc_468663
add esi, 20h
sub esi, edx
add edi, 20h
jmp loc_468683
loc_468663:
add edi, edx
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_46867B
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_468683
loc_46867B:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_46867B
loc_468683:
sub edi, 320h
add edx, 2
cmp edx, 20h
jnz loc_468651
jmp loc_468867
loc_468696:
mov edx, 1Eh
xor eax, eax
loc_46869D:
cmp edi, gpBufEnd
jb loc_4686B1
add esi, 20h
sub esi, edx
add edi, 20h
sub edi, edx
jmp loc_4686CF
loc_4686B1:
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_4686C7
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_4686CF
loc_4686C7:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_4686C7
loc_4686CF:
sub edi, 320h
test edx, edx
jz loc_4686E0
add edi, edx
sub edx, 2
jmp loc_46869D
loc_4686E0:
mov edx, 2
loc_4686E5:
cmp edi, gpBufEnd
jb loc_4686F9
add esi, 20h
sub esi, edx
add edi, 20h
sub edi, edx
jmp loc_468717
loc_4686F9:
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_46870F
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_468717
loc_46870F:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_46870F
loc_468717:
sub edi, 320h
add edi, edx
add edx, 2
cmp edx, 20h
jnz loc_4686E5
jmp loc_468867
loc_46872C:
mov edx, 1Eh
xor eax, eax
loc_468733:
cmp edi, gpBufEnd
jb loc_468745
add esi, 20h
sub esi, edx
add edi, 20h
jmp loc_468765
loc_468745:
add edi, edx
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_46875D
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_468765
loc_46875D:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_46875D
loc_468765:
sub edi, 320h
test edx, edx
jz loc_468774
sub edx, 2
jmp loc_468733
loc_468774:
mov eax, gpDrawMask
sub eax, 40h
mov gpDrawMask, eax
mov edx, 10h
loc_468786:
cmp edi, gpBufEnd
jb loc_468796
add esi, 20h
add edi, 20h
jmp loc_4687B0
loc_468796:
push edx
mov eax, gpDrawMask
mov edx, [eax]
xor eax, eax
mov ecx, 20h
loc_4687A5:
shl edx, 1
jnb loc_4687AB
mov [edi], al
loc_4687AB:
inc edi
dec ecx
jnz loc_4687A5
pop edx
loc_4687B0:
sub edi, 320h
mov eax, gpDrawMask
sub eax, 4
mov gpDrawMask, eax
dec edx
jnz loc_468786
jmp loc_468867
loc_4687CB:
mov edx, 1Eh
xor eax, eax
loc_4687D2:
cmp edi, gpBufEnd
jb loc_4687E6
add esi, 20h
sub esi, edx
add edi, 20h
sub edi, edx
jmp loc_468804
loc_4687E6:
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_4687FC
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_468804
loc_4687FC:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_4687FC
loc_468804:
sub edi, 320h
test edx, edx
jz loc_468815
add edi, edx
sub edx, 2
jmp loc_4687D2
loc_468815:
mov eax, gpDrawMask
sub eax, 40h
mov gpDrawMask, eax
mov edx, 10h
loc_468827:
cmp edi, gpBufEnd
jb loc_468837
add esi, 20h
add edi, 20h
jmp loc_468851
loc_468837:
push edx
mov eax, gpDrawMask
mov edx, [eax]
xor eax, eax
mov ecx, 20h
loc_468846:
shl edx, 1
jnb loc_46884C
mov [edi], al
loc_46884C:
inc edi
dec ecx
jnz loc_468846
pop edx
loc_468851:
sub edi, 320h
mov eax, gpDrawMask
sub eax, 4
mov gpDrawMask, eax
dec edx
jnz loc_468827
loc_468867:
pop esi
pop edi
pop ebx
retn
}
}
__declspec(naked) void drawLowerScreen(BYTE *pBuff)
{
__asm {
push ebx
push edx
push edi
push esi
mov edx, cel_transparency_active
test edx, edx
jz loc_468918
mov dl, arch_draw_type
cmp dl, 0
jnz loc_468892
call drawTopArchesLowerScreen
jmp loc_4696B9
loc_468892:
cmp dl, 1
jnz loc_4688D5
mov ebx, level_piece_id
mov al, block_lvid[ebx]
cmp al, 1
jz loc_4688AD
cmp al, 3
jz loc_4688AD
jmp loc_4688D5
loc_4688AD:
mov edx, offset LeftMask
add edx, 7Ch
call drawBottomArchesLowerScreen
jmp loc_4696B9
cmp al, 4
jnz loc_4688D5
mov edx, offset RightMask
add edx, 7Ch
call drawBottomArchesLowerScreen
jmp loc_4696B9
loc_4688D5:
cmp dl, 2
jnz loc_468918
mov ebx, level_piece_id
mov al, block_lvid[ebx]
cmp al, 2
jz loc_4688F0
cmp al, 3
jz loc_4688F0
jmp loc_468918
loc_4688F0:
mov edx, offset RightMask
add edx, 7Ch
call drawBottomArchesLowerScreen
jmp loc_4696B9
cmp al, 4
jnz loc_468918
mov edx, offset LeftMask
add edx, 7Ch
call drawBottomArchesLowerScreen
jmp loc_4696B9
loc_468918:
mov edi, offset SpeedFrameTbl
mov gpCelFrame, edi
mov edi, ecx
mov eax, light_table_index
test al, al
jz loc_468A1A
cmp al, lightmax
jz loc_468A78
mov eax, level_cel_block
and eax, 8000h
jnz loc_4689B0
mov ebx, pDungeonCels
mov esi, ebx
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 2
add ebx, eax
add esi, [ebx]
mov ebx, light_table_index
shl ebx, 8
add ebx, pLightTbl
mov eax, level_cel_block
shr eax, 0Ch
and eax, 0Fh
jz loc_468B03
cmp ax, 1
jz loc_468B5B
cmp ax, 2
jz loc_468C06
cmp ax, 3
jz loc_468CEC
cmp ax, 4
jz loc_468DD2
jmp loc_468EE2
loc_4689B0:
mov esi, gpCelFrame
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 4
add eax, light_table_index
shl eax, 2
add esi, eax
mov eax, [esi]
mov esi, pSpeedCels
add esi, eax
mov eax, level_cel_block
shr eax, 0Ch
and eax, 0Fh
loc_4689E3:
cmp ax, 8
jz loc_468FF2
cmp ax, 9
jz loc_469027
cmp ax, 0Ah
jz loc_469099
cmp ax, 0Bh
jz loc_46919D
cmp ax, 0Ch
jz loc_4692A5
jmp loc_469358
loc_468A1A:
mov eax, level_cel_block
and eax, 8000h
jz loc_468A4C
mov esi, gpCelFrame
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 6
add esi, eax
mov eax, level_cel_block
and eax, 0F000h
add eax, [esi]
mov level_cel_block, eax
loc_468A4C:
mov ebx, pDungeonCels
mov esi, ebx
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 2
add ebx, eax
add esi, [ebx]
mov eax, level_cel_block
shr eax, 0Ch
and eax, 7
add eax, 8
jmp loc_4689E3
loc_468A78:
mov eax, level_cel_block
and eax, 8000h
jz loc_468AAA
mov esi, gpCelFrame
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 6
add esi, eax
mov eax, level_cel_block
and eax, 0F000h
add eax, [esi]
mov level_cel_block, eax
loc_468AAA:
mov ebx, pDungeonCels
mov esi, ebx
mov eax, level_cel_block
and eax, 0FFFh
shl eax, 2
add ebx, eax
add esi, [ebx]
mov eax, level_cel_block
mov al, ah
shr eax, 4
and eax, 7
jz loc_46940D
cmp ax, 1
jz loc_46943F
cmp ax, 2
jz loc_4694A7
cmp ax, 3
jz loc_469539
cmp ax, 4
jz loc_4695CF
jmp loc_469644
loc_468B03:
mov edx, 20h
push ebp
loc_468B09:
push edx
cmp edi, gpBufEnd
jb loc_468B1A
add esi, 20h
add edi, 20h
jmp loc_468B4B
loc_468B1A:
xor edx, edx
mov ebp, 8
loc_468B21:
mov eax, [esi]
add esi, 4
ror eax, 10h
mov dl, al
mov cl, [ebx+edx]
mov dl, ah
mov ch, [ebx+edx]
ror eax, 10h
shl ecx, 10h
mov dl, al
mov cl, [ebx+edx]
mov dl, ah
mov ch, [ebx+edx]
mov [edi], ecx
add edi, 4
dec ebp
jnz loc_468B21
loc_468B4B:
sub edi, 320h
pop edx
dec edx
jnz loc_468B09
pop ebp
jmp loc_4696B9
loc_468B5B:
push ebp
mov ecx, 20h
loc_468B61:
push ecx
mov ebp, 20h
loc_468B67:
xor eax, eax
mov al, [esi]
inc esi
test al, al
jns loc_468B78
neg al
add edi, eax
sub ebp, eax
jmp loc_468BEA
loc_468B78:
sub ebp, eax
cmp edi, gpBufEnd
jb loc_468B88
add esi, eax
add edi, eax
jmp loc_468BEA
loc_468B88:
mov ecx, eax
cmp cl, 4
jl loc_468BC1
loc_468B8F:
mov eax, [esi]
add esi, 4
mov dl, al
mov ch, [ebx+edx]
mov dl, ah
ror eax, 10h
mov [edi], ch
mov ch, [ebx+edx]
mov dl, al
mov [edi+1], ch
mov ch, [ebx+edx]
mov dl, ah
mov [edi+2], ch
mov ch, [ebx+edx]
mov [edi+3], ch
add edi, 4
sub cl, 4
cmp cl, 4
jge loc_468B8F
loc_468BC1:
cmp cl, 2
jl loc_468BDC
mov dl, [esi]
mov ch, [ebx+edx]
mov [edi], ch
mov dl, [esi+1]
mov ch, [ebx+edx]
mov [edi+1], ch
add esi, 2
add edi, 2
loc_468BDC:
and cl, 1
jz loc_468BEA
mov dl, [esi]
inc esi
mov dl, [ebx+edx]
mov [edi], dl
inc edi
loc_468BEA:
test ebp, ebp
jnz loc_468B67
pop ecx
sub edi, 320h
dec ecx
jnz loc_468B61
pop ebp
jmp loc_4696B9
loc_468C06:
push ebp
mov ebp, 1Eh
mov eax, edi
sub eax, gpBufEnd
jb loc_468C4E
add eax, 3FFh
shr eax, 8
cmp eax, 2Dh
jg loc_468C40
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_1[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
sub ebp, ecx
jmp loc_468C4E
loc_468C40:
sub edi, 3000h
add esi, 120h
jmp loc_468C75
loc_468C4E:
add edi, ebp
mov ecx, 20h
sub ecx, ebp
mov edx, ecx
and edx, 2
add esi, edx
loc_468C5E:
mov dl, [esi]
inc esi
mov dl, [ebx+edx]
mov [edi], dl
inc edi
dec ecx
jnz loc_468C5E
sub edi, 320h
sub ebp, 2
jge loc_468C4E
loc_468C75:
mov ebp, 2
mov eax, edi
sub eax, gpBufEnd
jb loc_468CBC
add eax, 3FFh
shr eax, 8
cmp eax, 2Ah
jg loc_468CAE
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_2[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
add ebp, ecx
jmp loc_468CBC
loc_468CAE:
sub edi, 2D00h
add esi, 100h
jmp loc_468CE6
loc_468CBC:
add edi, ebp
mov ecx, 20h
sub ecx, ebp
mov edx, ecx
and edx, 2
add esi, edx
loc_468CCC:
mov dl, [esi]
inc esi
mov dl, [ebx+edx]
mov [edi], dl
inc edi
dec ecx
jnz loc_468CCC
add ebp, 2
sub edi, 320h
cmp ebp, 20h
jnz loc_468CBC
loc_468CE6:
pop ebp
jmp loc_4696B9
loc_468CEC:
push ebp
mov ebp, 1Eh
mov eax, edi
sub eax, gpBufEnd
jb loc_468D34
add eax, 3FFh
shr eax, 8
cmp eax, 2Dh
jg loc_468D26
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_1[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
sub ebp, ecx
jmp loc_468D34
loc_468D26:
sub edi, 3000h
add esi, 120h
jmp loc_468D5B
loc_468D34:
mov ecx, 20h
sub ecx, ebp
loc_468D3B:
mov dl, [esi]
inc esi
mov dl, [ebx+edx]
mov [edi], dl
inc edi
dec ecx
jnz loc_468D3B
mov edx, esi
and edx, 2
add esi, edx
sub edi, 320h
add edi, ebp
sub ebp, 2
jge loc_468D34
loc_468D5B:
mov ebp, 2
mov eax, edi
sub eax, gpBufEnd
jb loc_468DA2
add eax, 3FFh
shr eax, 8
cmp eax, 2Ah
jg loc_468D94
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_2[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
add ebp, ecx
jmp loc_468DA2
loc_468D94:
sub edi, 2D00h
add esi, 100h
jmp loc_468DCC
loc_468DA2:
mov ecx, 20h
sub ecx, ebp
loc_468DA9:
mov dl, [esi]
inc esi
mov dl, [ebx+edx]
mov [edi], dl
inc edi
dec ecx
jnz loc_468DA9
mov edx, esi
and edx, 2
add esi, edx
sub edi, 320h
add edi, ebp
add ebp, 2
cmp ebp, 20h
jnz loc_468DA2
loc_468DCC:
pop ebp
jmp loc_4696B9
loc_468DD2:
push ebp
mov ebp, 1Eh
mov eax, edi
sub eax, gpBufEnd
jb loc_468E1A
add eax, 3FFh
shr eax, 8
cmp eax, 2Dh
jg loc_468E0C
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_1[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
sub ebp, ecx
jmp loc_468E1A
loc_468E0C:
sub edi, 3000h
add esi, 120h
jmp loc_468E87
loc_468E1A:
add edi, ebp
mov ecx, 20h
sub ecx, ebp
mov edx, ecx
and edx, 2
add esi, edx
cmp cl, 4
jl loc_468E61
loc_468E2F:
mov eax, [esi]
add esi, 4
mov dl, al
mov ch, [ebx+edx]
mov dl, ah
ror eax, 10h
mov [edi], ch
mov ch, [ebx+edx]
mov dl, al
mov [edi+1], ch
mov ch, [ebx+edx]
mov dl, ah
mov [edi+2], ch
mov ch, [ebx+edx]
mov [edi+3], ch
add edi, 4
sub cl, 4
cmp cl, 4
jge loc_468E2F
loc_468E61:
cmp cl, 2
jl loc_468E7C
mov dl, [esi]
mov ch, [ebx+edx]
mov [edi], ch
mov dl, [esi+1]
mov ch, [ebx+edx]
mov [edi+1], ch
add esi, 2
add edi, 2
loc_468E7C:
sub edi, 320h
sub ebp, 2
jge loc_468E1A
loc_468E87:
mov ebp, 10h
loc_468E8C:
cmp edi, gpBufEnd
jb loc_468E9C
add esi, 20h
add edi, 20h
jmp loc_468ED3
loc_468E9C:
mov ecx, 20h
loc_468EA1:
mov eax, [esi]
add esi, 4
mov dl, al
mov ch, [ebx+edx]
mov dl, ah
ror eax, 10h
mov [edi], ch
mov ch, [ebx+edx]
mov dl, al
mov [edi+1], ch
mov ch, [ebx+edx]
mov dl, ah
mov [edi+2], ch
mov ch, [ebx+edx]
mov [edi+3], ch
add edi, 4
sub cl, 4
cmp cl, 4
jge loc_468EA1
loc_468ED3:
sub edi, 320h
dec ebp
jnz loc_468E8C
pop ebp
jmp loc_4696B9
loc_468EE2:
push ebp
mov ebp, 1Eh
mov eax, edi
sub eax, gpBufEnd
jb loc_468F2A
add eax, 3FFh
shr eax, 8
cmp eax, 2Dh
jg loc_468F1C
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_1[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
sub ebp, ecx
jmp loc_468F2A
loc_468F1C:
sub edi, 3000h
add esi, 120h
jmp loc_468F97
loc_468F2A:
mov ecx, 20h
sub ecx, ebp
cmp cl, 4
jl loc_468F68
loc_468F36:
mov eax, [esi]
add esi, 4
mov dl, al
mov ch, [ebx+edx]
mov dl, ah
ror eax, 10h
mov [edi], ch
mov ch, [ebx+edx]
mov dl, al
mov [edi+1], ch
mov ch, [ebx+edx]
mov dl, ah
mov [edi+2], ch
mov ch, [ebx+edx]
mov [edi+3], ch
add edi, 4
sub cl, 4
cmp cl, 4
jge loc_468F36
loc_468F68:
cmp cl, 2
jl loc_468F83
mov dl, [esi]
mov ch, [ebx+edx]
mov [edi], ch
mov dl, [esi+1]
mov ch, [ebx+edx]
mov [edi+1], ch
add esi, 2
add edi, 2
loc_468F83:
mov edx, esi
and edx, 2
add esi, edx
sub edi, 320h
add edi, ebp
sub ebp, 2
jge loc_468F2A
loc_468F97:
mov ebp, 10h
loc_468F9C:
cmp edi, gpBufEnd
jb loc_468FAC
add esi, 20h
add edi, 20h
jmp loc_468FE3
loc_468FAC:
mov ecx, 20h
loc_468FB1:
mov eax, [esi]
add esi, 4
mov dl, al
mov ch, [ebx+edx]
mov dl, ah
ror eax, 10h
mov [edi], ch
mov ch, [ebx+edx]
mov dl, al
mov [edi+1], ch
mov ch, [ebx+edx]
mov dl, ah
mov [edi+2], ch
mov ch, [ebx+edx]
mov [edi+3], ch
add edi, 4
sub cl, 4
cmp cl, 4
jge loc_468FB1
loc_468FE3:
sub edi, 320h
dec ebp
jnz loc_468F9C
pop ebp
jmp loc_4696B9
loc_468FF2:
mov edx, 20h
loc_468FF7:
cmp edi, gpBufEnd
jb loc_469007
add esi, 20h
add edi, 20h
jmp loc_469019
loc_469007:
mov ecx, 8
loc_46900C:
mov eax, [esi]
add esi, 4
mov [edi], eax
add edi, 4
dec ecx
jnz loc_46900C
loc_469019:
sub edi, 320h
dec edx
jnz loc_468FF7
jmp loc_4696B9
loc_469027:
mov ecx, 20h
loc_46902C:
push ecx
mov edx, 20h
loc_469032:
xor eax, eax
mov al, [esi]
inc esi
test al, al
js loc_469082
sub edx, eax
cmp edi, gpBufEnd
jb loc_46904B
add esi, eax
add edi, eax
jmp loc_46907C
loc_46904B:
mov ecx, eax
shr ecx, 1
jnb loc_46905B
mov al, [esi]
inc esi
mov [edi], al
inc edi
test ecx, ecx
jz loc_46907C
loc_46905B:
shr ecx, 1
jnb loc_46906F
mov ax, [esi]
add esi, 2
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_46907C
loc_46906F:
mov eax, [esi]
add esi, 4
mov [edi], eax
add edi, 4
dec ecx
jnz loc_46906F
loc_46907C:
test edx, edx
jz loc_46908A
jmp loc_469032
loc_469082:
neg al
add edi, eax
sub edx, eax
jnz loc_469032
loc_46908A:
pop ecx
sub edi, 320h
dec ecx
jnz loc_46902C
jmp loc_4696B9
loc_469099:
mov edx, 1Eh
mov eax, edi
sub eax, gpBufEnd
jb loc_4690E0
add eax, 3FFh
shr eax, 8
cmp eax, 2Dh
jg loc_4690D2
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_1[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
sub edx, ecx
jmp loc_4690E0
loc_4690D2:
sub edi, 3000h
add esi, 120h
jmp loc_469117
loc_4690E0:
add edi, edx
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_4690FF
mov ax, [esi+2]
add esi, 4
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_46910C
loc_4690FF:
mov eax, [esi]
add esi, 4
mov [edi], eax
add edi, 4
dec ecx
jnz loc_4690FF
loc_46910C:
sub edi, 320h
sub edx, 2
jge loc_4690E0
loc_469117:
mov edx, 2
mov eax, edi
sub eax, gpBufEnd
jb loc_46915E
add eax, 3FFh
shr eax, 8
cmp eax, 2Ah
jg loc_469150
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_2[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
add edx, ecx
jmp loc_46915E
loc_469150:
sub edi, 2D00h
add esi, 100h
jmp loc_469198
loc_46915E:
mov ecx, 20h
add edi, edx
sub ecx, edx
shr ecx, 2
jnb loc_46917D
mov ax, [esi+2]
add esi, 4
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_46918A
loc_46917D:
mov eax, [esi]
add esi, 4
mov [edi], eax
add edi, 4
dec ecx
jnz loc_46917D
loc_46918A:
add edx, 2
sub edi, 320h
cmp edx, 20h
jl loc_46915E
loc_469198:
jmp loc_4696B9
loc_46919D:
mov edx, 1Eh
mov eax, edi
sub eax, gpBufEnd
jb loc_4691E4
add eax, 3FFh
shr eax, 8
cmp eax, 2Dh
jg loc_4691D6
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_1[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
sub edx, ecx
jmp loc_4691E4
loc_4691D6:
sub edi, 3000h
add esi, 120h
jmp loc_46921D
loc_4691E4:
mov ecx, 20h
sub ecx, edx
mov ebx, ecx
shr ecx, 2
jz loc_4691FF
loc_4691F2:
mov eax, [esi]
add esi, 4
mov [edi], eax
add edi, 4
dec ecx
jnz loc_4691F2
loc_4691FF:
and ebx, 2
jz loc_469210
mov ax, [esi]
add esi, 4
mov [edi], ax
add edi, 2
loc_469210:
add edi, edx
sub edi, 320h
sub edx, 2
jge loc_4691E4
loc_46921D:
mov edx, 2
mov eax, edi
sub eax, gpBufEnd
jb loc_469264
add eax, 3FFh
shr eax, 8
cmp eax, 2Ah
jg loc_469256
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_2[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
add edx, ecx
jmp loc_469264
loc_469256:
sub edi, 2D00h
add esi, 100h
jmp loc_4692A0
loc_469264:
mov ecx, 20h
sub ecx, edx
mov ebx, ecx
shr ecx, 2
jz loc_46927F
loc_469272:
mov eax, [esi]
add esi, 4
mov [edi], eax
add edi, 4
dec ecx
jnz loc_469272
loc_46927F:
and ebx, 2
jz loc_469290
mov ax, [esi]
add esi, 4
mov [edi], ax
add edi, 2
loc_469290:
add edi, edx
add edx, 2
sub edi, 320h
cmp edx, 20h
jl loc_469264
loc_4692A0:
jmp loc_4696B9
loc_4692A5:
mov edx, 1Eh
mov eax, edi
sub eax, gpBufEnd
jb loc_4692EC
add eax, 3FFh
shr eax, 8
cmp eax, 2Dh
jg loc_4692DE
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_1[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
sub edx, ecx
jmp loc_4692EC
loc_4692DE:
sub edi, 3000h
add esi, 120h
jmp loc_469323
loc_4692EC:
add edi, edx
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_46930B
mov ax, [esi+2]
add esi, 4
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_469318
loc_46930B:
mov eax, [esi]
add esi, 4
mov [edi], eax
add edi, 4
dec ecx
jnz loc_46930B
loc_469318:
sub edi, 320h
sub edx, 2
jge loc_4692EC
loc_469323:
mov edx, 10h
loc_469328:
cmp edi, gpBufEnd
jb loc_469338
add esi, 20h
add edi, 20h
jmp loc_46934A
loc_469338:
mov ecx, 8
loc_46933D:
mov eax, [esi]
add esi, 4
mov [edi], eax
add edi, 4
dec ecx
jnz loc_46933D
loc_46934A:
sub edi, 320h
dec edx
jnz loc_469328
jmp loc_4696B9
loc_469358:
mov edx, 1Eh
mov eax, edi
sub eax, gpBufEnd
jb loc_46939F
add eax, 3FFh
shr eax, 8
cmp eax, 2Dh
jg loc_469391
mov ecx, WorldTbl3x16[eax*4]
mov eax, ecx
add esi, WorldTbl17_1[ecx]
shl eax, 6
lea eax, [eax+eax*2]
shr ecx, 1
sub edi, eax
sub edx, ecx
jmp loc_46939F
loc_469391:
sub edi, 3000h
add esi, 120h
jmp loc_4693D8
loc_46939F:
mov ecx, 20h
sub ecx, edx
mov ebx, ecx
shr ecx, 2
jz loc_4693BA
loc_4693AD:
mov eax, [esi]
add esi, 4
mov [edi], eax
add edi, 4
dec ecx
jnz loc_4693AD
loc_4693BA:
and ebx, 2
jz loc_4693CB
mov ax, [esi]
add esi, 4
mov [edi], ax
add edi, 2
loc_4693CB:
sub edi, 320h
add edi, edx
sub edx, 2
jge loc_46939F
loc_4693D8:
mov edx, 10h
loc_4693DD:
cmp edi, gpBufEnd
jb loc_4693ED
add esi, 20h
add edi, 20h
jmp loc_4693FF
loc_4693ED:
mov ecx, 8
loc_4693F2:
mov eax, [esi]
add esi, 4
mov [edi], eax
add edi, 4
dec ecx
jnz loc_4693F2
loc_4693FF:
sub edi, 320h
dec edx
jnz loc_4693DD
jmp loc_4696B9
loc_46940D:
mov edx, 20h
xor eax, eax
loc_469414:
cmp edi, gpBufEnd
jb loc_469424
add esi, 20h
add edi, 20h
jmp loc_469431
loc_469424:
mov ecx, 8
loc_469429:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_469429
loc_469431:
sub edi, 320h
dec edx
jnz loc_469414
jmp loc_4696B9
loc_46943F:
mov ecx, 20h
loc_469444:
push ecx
mov edx, 20h
loc_46944A:
xor eax, eax
mov al, [esi]
inc esi
test al, al
js loc_469490
sub edx, eax
cmp edi, gpBufEnd
jb loc_469463
add esi, eax
add edi, eax
jmp loc_46948A
loc_469463:
mov ecx, eax
add esi, ecx
xor eax, eax
shr ecx, 1
jnb loc_469474
mov [edi], al
inc edi
test ecx, ecx
jz loc_46948A
loc_469474:
shr ecx, 1
jnb loc_469482
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_46948A
loc_469482:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_469482
loc_46948A:
test edx, edx
jz loc_469498
jmp loc_46944A
loc_469490:
neg al
add edi, eax
sub edx, eax
jnz loc_46944A
loc_469498:
pop ecx
sub edi, 320h
dec ecx
jnz loc_469444
jmp loc_4696B9
loc_4694A7:
mov edx, 1Eh
xor eax, eax
loc_4694AE:
cmp edi, gpBufEnd
jb loc_4694C0
add esi, 20h
sub esi, edx
add edi, 20h
jmp loc_4694E0
loc_4694C0:
add edi, edx
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_4694D8
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_4694E0
loc_4694D8:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_4694D8
loc_4694E0:
sub edi, 320h
test edx, edx
jz loc_4694EF
sub edx, 2
jmp loc_4694AE
loc_4694EF:
mov edx, 2
loc_4694F4:
cmp edi, gpBufEnd
jb loc_469506
add esi, 20h
sub esi, edx
add edi, 20h
jmp loc_469526
loc_469506:
add edi, edx
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_46951E
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_469526
loc_46951E:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_46951E
loc_469526:
sub edi, 320h
add edx, 2
cmp edx, 20h
jnz loc_4694F4
jmp loc_4696B9
loc_469539:
mov edx, 1Eh
xor eax, eax
loc_469540:
cmp edi, gpBufEnd
jb loc_469554
add esi, 20h
sub esi, edx
add edi, 20h
sub edi, edx
jmp loc_469572
loc_469554:
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_46956A
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_469572
loc_46956A:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_46956A
loc_469572:
sub edi, 320h
test edx, edx
jz loc_469583
add edi, edx
sub edx, 2
jmp loc_469540
loc_469583:
mov edx, 2
loc_469588:
cmp edi, gpBufEnd
jb loc_46959C
add esi, 20h
sub esi, edx
add edi, 20h
sub edi, edx
jmp loc_4695BA
loc_46959C:
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_4695B2
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_4695BA
loc_4695B2:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_4695B2
loc_4695BA:
sub edi, 320h
add edi, edx
add edx, 2
cmp edx, 20h
jnz loc_469588
jmp loc_4696B9
loc_4695CF:
mov edx, 1Eh
xor eax, eax
loc_4695D6:
cmp edi, gpBufEnd
jb loc_4695E8
add esi, 20h
sub esi, edx
add edi, 20h
jmp loc_469608
loc_4695E8:
add edi, edx
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_469600
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_469608
loc_469600:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_469600
loc_469608:
sub edi, 320h
test edx, edx
jz loc_469617
sub edx, 2
jmp loc_4695D6
loc_469617:
mov edx, 10h
loc_46961C:
cmp edi, gpBufEnd
jb loc_46962C
add esi, 20h
add edi, 20h
jmp loc_469639
loc_46962C:
mov ecx, 8
loc_469631:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_469631
loc_469639:
sub edi, 320h
dec edx
jnz loc_46961C
jmp loc_4696B9
loc_469644:
mov edx, 1Eh
xor eax, eax
loc_46964B:
cmp edi, gpBufEnd
jb loc_46965F
add esi, 20h
sub esi, edx
add edi, 20h
sub edi, edx
jmp loc_46967D
loc_46965F:
mov ecx, 20h
sub ecx, edx
shr ecx, 2
jnb loc_469675
mov [edi], ax
add edi, 2
test ecx, ecx
jz loc_46967D
loc_469675:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_469675
loc_46967D:
sub edi, 320h
test edx, edx
jz loc_46968E
add edi, edx
sub edx, 2
jmp loc_46964B
loc_46968E:
mov edx, 10h
loc_469693:
cmp edi, gpBufEnd
jb loc_4696A3
add esi, 20h
add edi, 20h
jmp loc_4696B0
loc_4696A3:
mov ecx, 8
loc_4696A8:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_4696A8
loc_4696B0:
sub edi, 320h
dec edx
jnz loc_469693
loc_4696B9:
pop esi
pop edi
pop edx
pop ebx
retn
}
}
__declspec(naked) void world_draw_black_tile(BYTE *pBuff)
{
__asm {
push ebx
push edx
push edi
push esi
mov edi, ecx
mov edx, 1Eh
mov ebx, 1
xor eax, eax
loc_4696D0:
add edi, edx
mov ecx, ebx
loc_4696D4:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_4696D4
add edi, edx
sub edi, 340h
test edx, edx
jz loc_4696EE
sub edx, 2
inc ebx
jmp loc_4696D0
loc_4696EE:
mov edx, 2
mov ebx, 0Fh
loc_4696F8:
add edi, edx
mov ecx, ebx
loc_4696FC:
mov [edi], eax
add edi, 4
dec ecx
jnz loc_4696FC
add edi, edx
sub edi, 340h
dec ebx
add edx, 2
cmp edx, 20h
jnz loc_4696F8
pop esi
pop edi
pop edx
pop ebx
retn
}
}