Function at 0x4b1910
Capabilities:
Generate random numbers using the delphi lcg

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push ebx
push esi
push edi
mov edi, ecx
mov dword [ebp - 0xc], edi
mov ecx, dword [edi + 0xc]
mov ecx, dword [ecx + 3]
call fcn.00465690
mov dword [ebp - 4], eax
mov dl, byte [eax + 0x18]
dec dl
cmp dl, 2
jbe 0x4b18b5
mov edx, eax
cmp byte [edx + 0x20], 2
jb 0x4b1721
cmp dword [edx + 0x50], 1
jl 0x4b1721
mov eax, dword [edx + 0x54]
mov al, byte [eax]
test al, al
jne 0x4b1730
mov ecx, edi
call fcn.004aee70
test al, al
je 0x4b18df
mov ecx, dword [0x563e6c]
test ecx, ecx
je 0x4b17e0
movzx eax, byte [0x563ec7]
dec eax
cmp eax, 3
ja case.default.0x4b17f1
jmp dword [eax*4 + 0x4b18f0]
mov edx, edi
call fcn.004b1910
jmp case.default.0x4b17f1
mov eax, dword [0x5605e8]
xor esi, esi
mov ebx, eax
test ebx, ebx
jle case.default.0x4b17f1
cmp esi, eax
jb 0x4b177b
xor eax, eax
jmp 0x4b178f
mov eax, dword [0x5605ec]
movzx ecx, word [eax + esi*2]
call fcn.004800c0
mov ecx, dword [0x563e6c]
mov edx, eax
call fcn.004b1910
inc esi
cmp esi, ebx
jge case.default.0x4b17f1
mov ecx, dword [0x563e6c]
mov eax, dword [0x5605e8]
jmp 0x4b1773
mov eax, dword [0x55f180]
xor esi, esi
mov ebx, dword [eax + 4]
mov eax, dword [eax + 8]
test ebx, ebx
jle case.default.0x4b17f1
mov edi, eax
mov edx, dword [edi + esi*4]
call fcn.004b1910
inc esi
cmp esi, ebx
jge 0x4b17d8
mov ecx, dword [0x563e6c]
jmp 0x4b17c3
mov edi, dword [ebp - 0xc]
jmp case.default.0x4b17f1
mov ecx, dword [edi + 0xc]
movzx eax, byte [ecx + 2]
dec eax
cmp eax, 3
ja case.default.0x4b17f1
jmp dword [eax*4 + 0x4b1900]
mov ecx, dword [ecx + 0x1b]
cmp ecx, dword [0x5605e8]
jb 0x4b1813
xor eax, eax
mov ecx, edi
mov edx, eax
call fcn.004b1910
jmp case.default.0x4b17f1
mov eax, dword [0x5605ec]
movzx ecx, word [eax + ecx*2]
call fcn.004800c0
mov edx, eax
mov ecx, edi
call fcn.004b1910
jmp case.default.0x4b17f1
mov eax, dword [0x5605e8]
xor esi, esi
mov ebx, eax
test ebx, ebx
jle case.default.0x4b17f1
nop dword [eax]
cmp esi, eax
jb 0x4b1848
xor eax, eax
jmp 0x4b1856
mov eax, dword [0x5605ec]
movzx ecx, word [eax + esi*2]
call fcn.004800c0
mov edx, eax
mov ecx, edi
call fcn.004b1910
inc esi
cmp esi, ebx
jge case.default.0x4b17f1
mov eax, dword [0x5605e8]
jmp 0x4b1840
mov edx, dword [0x55f180]
mov eax, dword [ecx + 0x1b]
cmp dword [edx + 4], eax
jb 0x4b18e6
mov edx, dword [edx + 8]
mov ecx, edi
mov edx, dword [edx + eax*4]
call fcn.004b1910
jmp case.default.0x4b17f1
mov eax, dword [0x55f180]
xor esi, esi
mov ebx, dword [eax + 4]
mov eax, dword [eax + 8]
mov dword [ebp - 0xc], eax
test ebx, ebx
jle case.default.0x4b17f1
nop dword [eax]
mov edx, dword [eax + esi*4]
mov ecx, edi
call fcn.004b1910
mov eax, dword [ebp - 0xc]
inc esi
cmp esi, ebx
jl 0x4b18a0
mov eax, dword [ebp - 4]
cmp byte [eax + 0x18], 3
jne 0x4b18df
mov ecx, dword [eax + 0x24]
mov dl, 1
call fcn.00491e80
push dword [0x563e20]
call fcn.004c57d0
add esp, 4
mov edx, 2
mov ecx, edi
call fcn.004adc00
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, str.st_gEnemy_idx
call fcn.00469b60
push esi
pop ss
dec ebx
add byte [edx + 0x17], ah
dec ebx
add byte [esi + 0x17], dl
dec ebx
add byte [edi + edx + 0x17f8004b], ch
dec ebx
add byte [edi], ch
sbb byte [ebx], cl
imul ebx, dword [eax], 0x4b
add byte [eax + 1426082584], cl
push ebp
mov ebp, esp
sub esp, 0x2c
push ebx
push esi
push edi
mov edi, edx
mov esi, ecx
mov dword [ebp - 0x10], esi
cmp byte [edi + 0xbc], 0
je 0x4b22d4
mov ecx, dword [esi + 0xc]
mov ecx, dword [ecx + 3]
call fcn.00465690
mov ebx, eax
mov ecx, esi
push edi
mov edx, dword [ebx]
call fcn.00460020
mov dword [ebp - 8], eax
add esp, 4
cmp dword [ebx + 0x14], 3
mov eax, dword [edi + 0x10]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebx + 0x44]
mov byte [ebp - 1], 0
mov dword [ebp - 0xc], eax
jne 0x4b1a4c
cmp byte [ebx + 0x20], 2
jae 0x4b1a4c
mov ecx, esi
call fcn.0045f7b0
mov ecx, eax
mov eax, 0x51eb851f
imul ecx, dword [ebp - 0xc]
push esi
imul ecx
mov eax, 0x64
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
sub eax, ecx
movd xmm0, eax
mov eax, dword [esi]
cvtdq2pd xmm0, xmm0
mov eax, dword [eax + 0x40]
movsd qword [ebp - 0x18], xmm0
call eax
add esp, 4
test al, al
jne 0x4b1a11
mov ecx, esi
call fcn.0045eec0
mov ecx, edi
mov esi, eax
call fcn.0045eec0
cdq
idiv esi
movsd xmm0, qword [ebp - 0x18]
push edi
movd xmm1, eax
mov eax, dword [edi]
cvtdq2pd xmm1, xmm1
mov eax, dword [eax + 0x48]
subsd xmm1, qword [0x5454e0]
mulsd xmm1, qword [0x5454d0]
addsd xmm1, qword [0x5454e0]
mulsd xmm0, xmm1
movsd qword [ebp - 0x18], xmm0
call eax
add esp, 4
test al, al
je 0x4b1a11
movsd xmm0, qword [ebp - 0x18]
addsd xmm0, qword [0x545568]
movsd qword [ebp - 0x18], xmm0
mov ecx, edi
call fcn.0045f920
test al, al
jne 0x4b1a21
xorps xmm0, xmm0
jmp 0x4b1a26
movsd xmm0, qword [ebp - 0x18]
sub esp, 8
movsd qword [esp], xmm0
call fcn.0050322a
fstp qword [ebp - 0x18]
cvttsd2si eax, qword [ebp - 0x18]
mov ecx, 0x64
add esp, 8
mov esi, ecx
sub esi, eax
mov dword [ebp - 0xc], esi
jmp 0x4b1a4e
mov esi, eax
cmp byte [ebx + 0x20], 2
mov al, byte [edi + 0xbc]
jae 0x4b1ea5
test al, al
je 0x4b22d4
cmp dword [edi + 0x10], 0
jle 0x4b22d4
call fcn.004ae470
cmp byte [ebx + 0x48], 0
je 0x4b1bde
cmp byte [ebx + 0x4e], 0
je 0x4b1bc2
imul eax, dword [0x563db0], 0x8088405
mov edx, 0x64
mov ecx, dword [ebp - 8]
inc eax
mov dword [0x563db0], eax
mul edx
mov dword [ebp - 0x18], eax
cmp edx, esi
jl 0x4b1ab9
xor al, al
test al, al
setne dl
mov byte [ebp - 1], dl
jmp 0x4b1be1
mov eax, dword [edi + 0xc]
cmp byte [eax], 0
jne 0x4b1aec
cmp byte [eax + 1], 2
jne 0x4b1aec
mov eax, ecx
mov ecx, dword [edi]
cdq
sub eax, edx
mov esi, eax
mov ecx, dword [ecx + 0x38]
push edi
sar esi, 1
call ecx
add esp, 4
test al, al
je 0x4b1aea
mov eax, esi
cdq
sub eax, edx
mov ecx, eax
sar ecx, 1
jmp 0x4b1aec
mov ecx, esi
mov esi, dword [edi + 0x10]
cmp ecx, esi
cmovl esi, ecx
test esi, esi
jne 0x4b1b0a
mov esi, dword [ebp - 0xc]
xor al, al
test al, al
setne dl
mov byte [ebp - 1], dl
jmp 0x4b1be1
call fcn.004ae470
cmp dword [edi + 0x10], 0
je 0x4b1b64
mov eax, dword [edi]
push edi
mov eax, dword [eax]
call eax
mov ecx, dword [edi + 0x10]
add esp, 4
sub ecx, esi
js 0x4b1b39
cmp ecx, eax
cmovle eax, ecx
mov dword [edi + 0x10], eax
test eax, eax
je 0x4b1b40
mov eax, 0x83
jmp 0x4b1b51
mov dword [edi + 0x10], 0
mov edx, 1
mov ecx, edi
call fcn.0045f170
mov eax, 0x7f
push 0
push 0
mov edx, esi
mov dword [edi + 0x68], eax
mov ecx, edi
call fcn.0045e510
add esp, 8
test esi, esi
jle 0x4b1b72
mov ecx, dword [ebp - 0x10]
mov edx, esi
call fcn.0045eae0
cmp dword [edi + 0x10], 0
jne 0x4b1bb3
mov edx, 1
mov ecx, edi
call fcn.004b2810
cmp dword [edi + 0x10], 0
jne 0x4b1bb3
cmp byte [edi + 0xbd], 1
jne 0x4b1bb3
mov ecx, dword [0x564668]
cmp dword [ecx + 4], 0
cmove ecx, dword [0x5640ac]
call fcn.00492480
mov dword [edi + 0xd4], 0x24
mov esi, dword [ebp - 0xc]
mov al, 1
test al, al
setne dl
mov byte [ebp - 1], dl
jmp 0x4b1be1
mov edx, dword [ebp - 8]
push ecx
push dword [ebx + 0x34]
mov ecx, edi
push esi
call fcn.004b2bf0
add esp, 0xc
test al, al
setne dl
mov byte [ebp - 1], dl
jmp 0x4b1be1
mov dl, byte [ebp - 1]
cmp byte [edi + 0xbc], 0
je 0x4b22d4
cmp dword [edi + 0x10], 0
jle 0x4b22d4
cmp byte [ebx + 0x49], 0
je 0x4b1ce5
cmp byte [ebx + 0x4e], 0
je 0x4b1cc9
imul eax, dword [0x563db0], 0x8088405
mov ecx, 0x64
inc eax
mov dword [0x563db0], eax
mul ecx
mov dword [ebp - 0x18], eax
cmp edx, esi
jl 0x4b1c31
xor al, al
jmp 0x4b1cdc
mov eax, dword [edi + 0x14]
mov esi, dword [ebp - 8]
cmp esi, eax
cmovge esi, eax
test esi, esi
jne 0x4b1c4a
mov esi, dword [ebp - 0xc]
xor al, al
jmp 0x4b1cdc
mov eax, dword [edi]
push edi
mov eax, dword [eax + 4]
call eax
mov ecx, dword [edi + 0x14]
add esp, 4
sub ecx, esi
js 0x4b1c7c
cmp ecx, eax
cmovle eax, ecx
mov dword [edi + 0x14], eax
test eax, eax
je 0x4b1c83
neg eax
mov edx, 3
push eax
mov ecx, edi
call fcn.004a9030
add esp, 4
jmp 0x4b1c83
mov dword [edi + 0x14], 0
mov ecx, dword [ebp - 0x10]
push ecx
mov eax, dword [ecx]
mov eax, dword [eax + 4]
call eax
mov ecx, dword [ebp - 0x10]
add esp, 4
mov edx, dword [ecx + 0x14]
mov dword [ebp - 0x14], edx
add edx, esi
js 0x4b1ca5
cmp edx, eax
cmovle eax, edx
jmp 0x4b1ca7
xor eax, eax
mov dword [ecx + 0x14], eax
sub eax, dword [ebp - 0x14]
je 0x4b1cbd
push eax
mov edx, 3
call fcn.004a9030
add esp, 4
call fcn.004ae470
mov esi, dword [ebp - 0xc]
mov al, 1
jmp 0x4b1cdc
push esi
push dword [ebp - 8]
mov edx, 1
mov ecx, edi
call fcn.004b2e20
add esp, 8
or al, byte [ebp - 1]
setne dl
mov byte [ebp - 1], dl
test dl, dl
jne 0x4b1cfb
cmp byte [ebx + 0x48], dl
jne 0x4b2172
cmp byte [ebx + 0x49], dl
jne 0x4b2172
cmp byte [ebx + 0x4a], 0
je 0x4b1d2d
imul eax, dword [0x563db0], 0x8088405
mov ecx, 0x64
inc eax
mov dword [0x563db0], eax
mul ecx
mov dword [ebp - 0x18], eax
cmp edx, esi
jl 0x4b1d23
xor al, al
jmp 0x4b1d2a
call fcn.004ae470
mov al, 1
or byte [ebp - 1], al
cmp byte [ebx + 0x4b], 0
je 0x4b1d70
imul eax, dword [0x563db0], 0x8088405
mov ecx, 0x64
inc eax
mov dword [0x563db0], eax
mul ecx
mov dword [ebp - 0x18], eax
cmp edx, esi
jl 0x4b1d5e
xor al, al
or al, byte [ebp - 1]
setne cl
mov byte [ebp - 1], cl
jmp 0x4b1d73
call fcn.004ae470
mov al, 1
or al, byte [ebp - 1]
setne cl
mov byte [ebp - 1], cl
jmp 0x4b1d73
mov cl, byte [ebp - 1]
cmp byte [ebx + 0x4c], 0
je 0x4b1dab
imul eax, dword [0x563db0], 0x8088405
mov ecx, 0x64
inc eax
mov dword [0x563db0], eax
mul ecx
mov dword [ebp - 0x18], eax
cmp edx, esi
jl 0x4b1d9b
xor al, al
jmp 0x4b1da2
call fcn.004ae470
mov al, 1
or al, byte [ebp - 1]
setne cl
mov byte [ebp - 1], cl
cmp byte [ebx + 0x4d], 0
je 0x4b1de3
imul eax, dword [0x563db0], 0x8088405
mov edx, 0x64
inc eax
mov dword [0x563db0], eax
mul edx
mov dword [ebp - 0x18], eax
cmp edx, esi
jl 0x4b1dd3
xor al, al
jmp 0x4b1ddd
call fcn.004ae470
mov cl, byte [ebp - 1]
mov al, 1
or al, cl
setne byte [ebp - 1]
cmp byte [edi + 0xbc], 0
je 0x4b22d4
cmp dword [edi + 0x10], 0
jle 0x4b22d4
cmp byte [ebx + 0x60], 0
je 0x4b2172
mov eax, dword [0x55f150]
mov ecx, dword [eax + 4]
mov dword [ebp - 0x10], ecx
test ecx, ecx
jle 0x4b2172
mov esi, 1
mov eax, ecx
nop
mov ecx, esi
mov dword [ebp - 0x14], ecx
test esi, esi
jle 0x4b1e9b
cmp esi, dword [ebx + 0x58]
jg 0x4b1e9b
mov eax, dword [ebx + 0x5c]
mov al, byte [eax + ecx - 1]
test al, al
je 0x4b1e98
imul eax, dword [0x563db0], 0x8088405
mov edx, 0x64
inc eax
mov dword [0x563db0], eax
mul edx
mov dword [ebp - 0x28], eax
cmp edx, dword [ebp - 0xc]
jge 0x4b1e98
mov eax, dword [edi]
push esi
push edi
mov eax, dword [eax + 0x1c]
call eax
add esp, 8
test eax, eax
jle 0x4b1e95
mov edx, esi
mov ecx, edi
call fcn.0045ef50
test eax, eax
js 0x4b1e95
mov edx, esi
mov ecx, edi
call fcn.0045ef50
dec eax
mov edx, esi
push eax
mov ecx, edi
call fcn.0045efd0
add esp, 4
call fcn.004ae470
mov byte [ebp - 1], 1
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x10]
inc esi
cmp ecx, eax
jl 0x4b1e20
jmp 0x4b2172
test al, al
je 0x4b1eaf
cmp dword [edi + 0x10], 0
jg 0x4b1ec6
cmp dword [ebx + 0x50], 1
jl 0x4b22d4
mov eax, dword [ebx + 0x54]
mov al, byte [eax]
test al, al
je 0x4b22d4
call fcn.004ae470
cmp byte [ebx + 0x48], 0
je 0x4b1f14
imul eax, dword [0x563db0], 0x8088405
mov ecx, 0x64
inc eax
mov dword [0x563db0], eax
mul ecx
mov dword [ebp - 0x28], eax
cmp edx, esi
jge 0x4b1f10
call fcn.004ae470
cmp dword [edi + 0x10], 0
je 0x4b1f10
mov eax, dword [ebp - 8]
test eax, eax
je 0x4b1f10
mov edx, eax
mov ecx, edi
call fcn.0045eae0
mov byte [ebp - 1], 1
jmp 0x4b1f14
mov byte [ebp - 1], 0
cmp byte [ebx + 0x49], 0
je 0x4b1f7b
imul eax, dword [0x563db0], 0x8088405
mov ecx, 0x64
inc eax
mov dword [0x563db0], eax
mul ecx
mov dword [ebp - 0x28], eax
cmp edx, esi
jl 0x4b1f3c
xor al, al
jmp 0x4b1f78
mov eax, dword [edi]
push edi
mov eax, dword [eax + 4]
call eax
mov ecx, dword [ebp - 8]
add esp, 4
mov edx, dword [edi + 0x14]
add ecx, edx
js 0x4b1f58
cmp ecx, eax
cmovle eax, ecx
jmp 0x4b1f5a
xor eax, eax
mov dword [edi + 0x14], eax
sub eax, edx
je 0x4b1f71
push eax
mov edx, 3
mov ecx, edi
call fcn.004a9030
add esp, 4
call fcn.004ae470
mov al, 1
or byte [ebp - 1], al
cmp byte [ebx + 0x4a], 0
je 0x4b1fcb
imul eax, dword [0x563db0], 0x8088405
mov ecx, 0x64
inc eax
mov dword [0x563db0], eax
mul ecx
mov dword [ebp - 0x28], eax
cmp edx, esi
jl 0x4b1fa3
xor al, al
jmp 0x4b1fc4
push dword [ebp - 8]
mov edx, 2
mov ecx, edi
call fcn.0045ec30
add esp, 4
test eax, eax
jne 0x4b1fbd
xor al, al
jmp 0x4b1fc4
call fcn.004ae470
mov al, 1
or al, byte [ebp - 1]
setne byte [ebp - 1]
cmp byte [ebx + 0x4b], 0
je 0x4b201b
imul eax, dword [0x563db0], 0x8088405
mov ecx, 0x64
inc eax
mov dword [0x563db0], eax
mul ecx
mov dword [ebp - 0x28], eax
cmp edx, esi
jl 0x4b1ff3
xor al, al
jmp 0x4b2014
push dword [ebp - 8]
mov edx, 3
mov ecx, edi
call fcn.0045ec30
add esp, 4
test eax, eax
jne 0x4b200d
xor al, al
jmp 0x4b2014
call fcn.004ae470
mov al, 1
or al, byte [ebp - 1]
setne byte [ebp - 1]
cmp byte [ebx + 0x4c], 0
je 0x4b206b
imul eax, dword [0x563db0], 0x8088405
mov ecx, 0x64
inc eax
mov dword [0x563db0], eax
mul ecx
mov dword [ebp - 0x28], eax
cmp edx, esi
jl 0x4b2043
xor al, al
jmp 0x4b2064
push dword [ebp - 8]
mov edx, 4
mov ecx, edi
call fcn.0045ec30
add esp, 4
test eax, eax
jne 0x4b205d
xor al, al
jmp 0x4b2064
call fcn.004ae470
mov al, 1
or al, byte [ebp - 1]
setne byte [ebp - 1]
cmp byte [ebx + 0x4d], 0
je 0x4b20bb
imul eax, dword [0x563db0], 0x8088405
mov ecx, 0x64
inc eax
mov dword [0x563db0], eax
mul ecx
mov dword [ebp - 0x28], eax
cmp edx, esi
jl 0x4b2093
xor al, al
jmp 0x4b20b4
push dword [ebp - 8]
mov edx, 5
mov ecx, edi
call fcn.0045ec30
add esp, 4
test eax, eax
jne 0x4b20ad
xor al, al
jmp 0x4b20b4
call fcn.004ae470
mov al, 1
or al, byte [ebp - 1]
setne byte [ebp - 1]
cmp byte [ebx + 0x60], 0
je 0x4b2172
mov eax, dword [0x55f150]
mov ecx, dword [eax + 4]
mov dword [ebp - 0x14], ecx
test ecx, ecx
jle 0x4b2172
mov esi, 1
mov eax, ecx
nop
mov ecx, esi
mov dword [ebp - 0x10], ecx
test esi, esi
jle 0x4b2169
cmp esi, dword [ebx + 0x58]
jg 0x4b2169
mov eax, dword [ebx + 0x5c]
mov al, byte [eax + ecx - 1]
test al, al
je 0x4b2166
imul eax, dword [0x563db0], 0x8088405
mov ecx, 0x64
inc eax
mov dword [0x563db0], eax
mul ecx
mov dword [ebp - 0x28], eax
cmp edx, dword [ebp - 0xc]
jge 0x4b215a
mov eax, dword [edi]
push esi
push edi
mov eax, dword [eax + 0x1c]
call eax
add esp, 8
cmp eax, 4
jge 0x4b215a
mov edx, esi
mov ecx, edi
call fcn.0045ef50
test eax, eax
jg 0x4b215a
mov edx, esi
mov ecx, edi
call fcn.0045ef50
inc eax
mov edx, esi
push eax
mov ecx, edi
call fcn.0045efd0
add esp, 4
call fcn.004ae470
mov al, 1
jmp 0x4b215c
xor al, al
or al, byte [ebp - 1]
mov ecx, dword [ebp - 0x10]
setne byte [ebp - 1]
mov eax, dword [ebp - 0x14]
inc esi
cmp ecx, eax
jl 0x4b20e0
mov cl, byte [ebx + 0x20]
cmp cl, 2
setae al
cmp dword [ebx + 0x6c], 0
jne 0x4b2187
cmp cl, 2
setb al
test al, al
mov eax, dword [0x55f1a8]
mov ecx, dword [eax + 4]
mov dword [ebp - 0x14], ecx
je 0x4b21e3
test ecx, ecx
jle 0x4b22a0
mov esi, 1
mov eax, ecx
mov ecx, esi
mov dword [ebp - 0x10], ecx
test esi, esi
jle 0x4b21d9
cmp esi, dword [ebx + 0x50]
jg 0x4b21d9
mov eax, dword [ebx + 0x54]
mov al, byte [eax + ecx - 1]
test al, al
je 0x4b21d6
push dword [ebp - 0xc]
mov edx, esi
mov ecx, edi
call fcn.004b2ec0
add esp, 4
mov ecx, esi
or al, byte [ebp - 1]
setne byte [ebp - 1]
mov eax, dword [ebp - 0x14]
inc esi
cmp ecx, eax
jl 0x4b21a5
jmp 0x4b22a0
test ecx, ecx
jle 0x4b225d
mov esi, 1
mov eax, ecx
mov ecx, esi
mov dword [ebp - 0x10], ecx
test esi, esi
jle 0x4b2258
cmp esi, dword [ebx + 0x50]
jg 0x4b2258
mov eax, dword [ebx + 0x54]
mov al, byte [eax + ecx - 1]
test al, al
je 0x4b2255
imul eax, dword [0x563db0], 0x8088405
mov ecx, 0x64
inc eax
mov dword [0x563db0], eax
mul ecx
mov dword [ebp - 0x28], eax
cmp edx, dword [ebp - 0xc]
jge 0x4b2249
mov edx, esi
mov ecx, edi
call fcn.0045f050
test eax, eax
je 0x4b2249
mov edx, esi
mov ecx, edi
call fcn.0045f430
call fcn.004ae470
mov al, 1
jmp 0x4b224b
xor al, al
or al, byte [ebp - 1]
mov ecx, dword [ebp - 0x10]
setne byte [ebp - 1]
mov eax, dword [ebp - 0x14]
inc esi
cmp ecx, eax
jl 0x4b21f2
cmp dword [ebp - 0x1c], 0
jne 0x4b22a0
cmp dword [edi + 0x10], 0
jle 0x4b22a0
cmp byte [ebx + 0x48], 0
je 0x4b2277
mov edx, dword [ebp - 8]
lea edx, [edx - 1]
jmp 0x4b2299
mov ecx, dword [edi]
push edi
mov ecx, dword [ecx]
call ecx
mov ecx, eax
add esp, 4
imul ecx, dword [ebp - 8]
mov eax, 0x51eb851f
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
dec eax
add edx, eax
mov ecx, edi
call fcn.0045eae0
cmp byte [ebp - 1], 0
jne 0x4b22d4
call fcn.004ae470
mov edx, dword [0x56424c]
mov ecx, edi
call fcn.0045e810
cmp dword [ebx + 0x14], 3
jne 0x4b22d4
mov ecx, dword [0x564664]
cmp dword [ecx + 4], 0
cmove ecx, dword [0x5640a8]
call fcn.00492480
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret