Function at 0x519a50
Capabilities:
Parse credit card information

Disassembly:
sub esp, 0x18
push ebx
mov ebx, dword [esp + 0x20]
push ebp
mov ebp, dword [esp + 0x30]
lea eax, [ebx + ebx*4]
mov dword [esp + 0xc], ecx
push esi
push edi
mov edi, dword [esp + 0x34]
lea eax, [ebx + eax*8]
xor esi, esi
mov dword [esp + 0x18], edi
lea edx, [eax + eax*4]
mov dword [esp + 0x10], ebp
mov dword [esp + 0x1c], esi
mov dword [esp + 0x24], esi
cmp word [ecx + edx*4 + 0x5c], si
lea ecx, [ecx + edx*4]
mov dword [esp + 0x20], esi
mov dword [esp + 0x34], ecx
jle 0x519ab2
mov ecx, dword [esp + 0x14]
mov eax, esi
push eax
push ebx
inc esi
call fcn.0051ebb0
mov eax, dword [esp + 0x34]
movsx ecx, word [eax + 0x5c]
cmp esi, ecx
jl 0x519a94
xor esi, esi
mov ecx, eax
mov edx, dword [esp + 0x30]
mov word [ecx + 0x2e8], si
mov word [ecx + 0x23a], si
lea eax, [edx - 3]
cmp eax, 0x23
ja case.0x519ad8.21
xor edx, edx
mov dl, byte [eax + 0x51c198]
jmp dword [edx*4 + 0x51c14c]
cmp word [ecx + 0x5c], si
jle case.0x519ad8.21
mov edi, dword [esp + 0x14]
mov ebp, 2
mov eax, esi
mov ecx, edi
push eax
push ebx
inc esi
call fcn.0051ebb0
lea ecx, [eax + eax*8]
lea eax, [eax + ecx*8]
shl eax, 4
cmp word [eax + 0x177c2cc], bp
jne 0x519b33
cmp word [eax + 0x177c4e0], 0
jne 0x519b33
mov byte [eax + 0x177c605], 3
mov word [eax + 0x177c5dc], 3
mov word [eax + 0x177c5f0], 0
mov edx, dword [esp + 0x34]
movsx eax, word [edx + 0x5c]
cmp esi, eax
jl 0x519af2
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x18
ret 0x14
mov word [ecx + 0x22e], si
xor edi, edi
mov word [ecx + 0x2e8], si
cmp word [ecx + 0x5c], si
jle case.0x519ad8.21
mov ebp, dword [esp + 0x14]
mov eax, edi
mov ecx, ebp
push eax
push ebx
inc edi
call fcn.0051ebb0
lea ecx, [eax + eax*8]
lea esi, [eax + ecx*8]
shl esi, 4
cmp word [esi + 0x177c2cc], 2
jne 0x519bd2
cmp word [esi + 0x177c4e0], 0
jne 0x519bd2
mov cl, byte [esi + 0x177c653]
test cl, cl
jne 0x519bd2
mov byte [esi + 0x177c605], 3
mov word [esi + 0x177c5dc], 3
push eax
mov ecx, 0x177bf80
mov word [esi + 0x177c5f0], 0
call fcn.00525f20
xor eax, eax
mov dword [esi + 0x177c5e8], eax
mov word [esi + 0x177c586], ax
mov edx, dword [esp + 0x34]
movsx eax, word [edx + 0x5c]
cmp edi, eax
jl 0x519b6c
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x18
ret 0x14
mov ecx, dword [esp + 0x34]
lea edx, [edi + edi*8]
xor eax, eax
lea ebx, [edi + edx*8]
mov word [ecx + 0x22e], ax
shl ebx, 4
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], eax
cmp dword [ebx + 0x177c2d8], ebp
je 0x519c1d
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret 0x14
cmp word [ecx + 0x5c], ax
jle case.0x519ad8.21
mov ecx, dword [esp + 0x10]
mov eax, ecx
inc ecx
push eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x18]
push eax
call fcn.0051ebb0
lea ecx, [eax + eax*8]
lea esi, [eax + ecx*8]
shl esi, 4
cmp word [esi + 0x177c2cc], 2
jne case.0x519c9f.9
cmp word [esi + 0x177c4e0], 0
jne case.0x519c9f.9
mov cl, byte [esi + 0x177c653]
test cl, cl
jne case.0x519c9f.9
xor ecx, ecx
mov word [esi + 0x177c330], cx
mov word [esi + 0x177c332], cx
movsx ebp, word [esi + 0x177c2ce]
add ebp, 0xfffffffb
cmp ebp, 0x48
ja case.0x519c9f.9
xor edx, edx
mov dl, byte [ebp + 0x51c1d0]
jmp dword [edx*4 + 0x51c1bc]
mov ecx, dword [esp + 0x38]
mov word [esi + 0x177c5dc], 4
mov word [esi + 0x177c5de], di
mov dword [esi + 0x177c5e0], ecx
push eax
mov ecx, 0x177bf80
mov byte [esi + 0x177c638], 0
call fcn.00525f20
mov word [esi + 0x177c618], 0xa
cmp word [ebx + 0x177c2ce], 0x2e
jne case.0x519c9f.9
mov edx, dword [esp + 0x34]
mov word [edx + 0x23a], 1
jmp case.0x519c9f.9
cmp word [esi + 0x177c500], 0x69
jne 0x519d0e
mov word [esi + 0x177c500], 0x65
mov ecx, dword [esp + 0x38]
mov word [esi + 0x177c5dc], 4
mov word [esi + 0x177c5de], di
mov word [esi + 0x177c584], di
mov dword [esi + 0x177c5e0], ecx
mov dword [esi + 0x177c2e0], ecx
push eax
mov ecx, 0x177bf80
mov byte [esi + 0x177c638], 0
call fcn.00525f20
cmp word [ebx + 0x177c2ce], 0x2e
jne case.0x519c9f.9
mov eax, dword [esp + 0x34]
mov word [eax + 0x23a], 1
jmp case.0x519c9f.9
cmp word [ebx + 0x177c2ce], 0x2c
je case.0x519c9f.9
cmp dword [esp + 0x3c], 1
jne 0x519d7b
cmp word [ebx + 0x177c500], 0x6a
je case.0x519c9f.9
inc dword [esp + 0x18]
jmp case.0x519c9f.9
mov byte [esi + 0x177c605], 5
mov word [esi + 0x177c5dc], 5
mov cx, word [ebx + 0x177c304]
mov word [esi + 0x177c628], cx
mov dx, word [ebx + 0x177c306]
mov word [esi + 0x177c62a], dx
mov word [esi + 0x177c5e4], 0xb
mov word [esi + 0x177c618], 0xa
mov eax, dword [esp + 0x34]
movsx ecx, word [eax + 0x5c]
cmp dword [esp + 0x10], ecx
jl 0x519c27
mov eax, dword [esp + 0x18]
test eax, eax
je case.0x519ad8.21
mov ebp, dword [esp + 0x34]
movsx eax, word [ebp + 0x5a]
lea edx, [eax + eax*8]
lea esi, [eax + edx*8]
shl esi, 4
mov ecx, dword [esi + 0x177c314]
movsx edx, word [esi + 0x177c304]
movsx ebx, word [ecx*2 + 0x131be90]
movsx ecx, word [esi + 0x177c306]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x34], ecx
lea edx, [esp + 0x34]
lea ecx, [esp + 0x1c]
push edx
push ecx
mov ecx, edi
push ecx
mov ecx, dword [esp + 0x20]
push eax
call fcn.0051c750
movsx edx, word [esi + 0x177c2d6]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x34]
push edx
mov edx, dword [esp + 0x20]
push ebx
push eax
mov eax, dword [esp + 0x38]
push ecx
push edx
push edi
push eax
mov ecx, 0x1cd0f70
call fcn.00499490
mov ecx, dword [esp + 0x38]
mov eax, edi
mov word [ebp + 0x2e8], di
mov dword [ebp + 0x2ec], ecx
lea edx, [eax + eax*8]
lea eax, [eax + edx*8]
shl eax, 4
mov ecx, dword [eax + 0x177c314]
mov dword [ebp + 0x2f0], ecx
movsx ecx, word [eax + 0x177c32e]
movsx eax, word [eax + 0x177c32c]
lea edx, [ecx + ecx*2]
mov ecx, dword [edx*4 + 0xb2ef10]
add ecx, eax
xor eax, eax
mov dword [ebp + 0x2dc], ecx
cmp word [ebp + 0x5c], ax
mov dword [esp + 0x30], eax
mov dword [esp + 0x10], eax
jle 0x51a065
mov dword [esp + 0x18], 0x1ceb310
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x2c]
mov eax, ecx
inc ecx
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x14]
push eax
push edx
call fcn.0051ebb0
mov ebx, eax
lea eax, [ebx + ebx*8]
lea esi, [ebx + eax*8]
shl esi, 4
cmp word [esi + 0x177c2cc], 2
jne case.0x519f1f.6
cmp word [esi + 0x177c4e0], 0
jne case.0x519f1f.6
mov al, byte [esi + 0x177c653]
test al, al
jne case.0x519f1f.6
movsx eax, word [esi + 0x177c2ce]
add eax, 0xfffffffb
cmp eax, 0x46
ja case.0x519f1f.6
xor ecx, ecx
mov cl, byte [eax + 0x51c224]
jmp dword [ecx*4 + 0x51c21c]
cmp dword [esp + 0x3c], 1
jne 0x519f3b
cmp word [esi + 0x177c500], 0x6a
je case.0x519f1f.6
mov edx, dword [esp + 0x18]
mov eax, dword [edx]
test eax, eax
je case.0x519f1f.6
movsx ecx, word [eax*2 + 0x9cd9a8]
mov dword [esp + 0x34], ecx
lea edx, [ecx + ecx*2]
sub eax, dword [edx*4 + 0xb2ef10]
mov edx, dword [esp + 0x18]
cmp dword [edx + 4], 0
mov dword [esp + 0x1c], eax
je 0x519f8b
mov edx, dword [esp + 0x38]
mov word [esi + 0x177c5dc], 4
mov word [esi + 0x177c5de], di
mov dword [esi + 0x177c5e0], edx
xor edx, edx
jmp 0x519fa2
xor edx, edx
mov word [esi + 0x177c5dc], dx
cmp word [esi + 0x177c2ce], 0x37
je case.0x519f1f.6
mov word [esi + 0x177c51c], ax
mov word [esi + 0x177c51e], cx
mov dword [esi + 0x177c5e8], edx
mov word [esi + 0x177c586], dx
cmp word [esi + 0x177c500], 0x6a
jne 0x519fd9
mov ax, word [esi + 0x177c58c]
imul ax, ax, 0xfffc
mov word [esi + 0x177c512], ax
mov ecx, dword [esp + 0x2c]
mov word [esi + 0x177c500], 0x65
push ecx
mov ecx, dword [esp + 0x18]
call fcn.00518e90
test eax, eax
je 0x51a000
mov dword [0x1cd0ff8], 1
jmp 0x51a00a
mov dword [0x1cd0ff0], 1
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x1c]
push 0
push edx
push eax
push ebx
mov ecx, 0x177bf80
call fcn.0056d530
mov word [esi + 0x177c5ec], 0xffce
mov ecx, dword [esp + 0x30]
movsx eax, word [esi + 0x177c33c]
cdq
sub eax, edx
sar eax, 1
cmp eax, ecx
jle 0x51a042
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x18]
mov dword [0x1cd0ff0], 0
add eax, 0xc
mov dword [esp + 0x18], eax
movsx ecx, word [ebp + 0x5c]
cmp dword [esp + 0x10], ecx
jl 0x519eb5
mov edx, dword [esp + 0x30]
lea eax, [edx*8]
cmp eax, 8
jg 0x51a555
mov eax, 8
pop edi
mov word [ebp + 0x2e6], ax
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x18
ret 0x14
lea eax, [edi + edi*8]
xor ebx, ebx
mov dword [esp + 0x18], ebx
lea ebp, [edi + eax*8]
mov eax, dword [esp + 0x38]
shl ebp, 4
mov dword [esp + 0x3c], ebp
mov ecx, dword [ebp + 0x177c2d8]
cmp ecx, eax
je 0x51a0c1
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x18
ret 0x14
mov edx, dword [esp + 0x34]
cmp word [edx + 0x5c], bx
jle case.0x519ad8.21
mov ecx, dword [esp + 0x14]
mov eax, ebx
push eax
mov eax, dword [esp + 0x30]
push eax
inc ebx
call fcn.0051ebb0
lea ecx, [eax + eax*8]
lea esi, [eax + ecx*8]
shl esi, 4
cmp word [esi + 0x177c2cc], 2
jne case.0x51a13d.9
cmp word [esi + 0x177c4e0], 0
jne case.0x51a13d.9
mov cl, byte [esi + 0x177c653]
test cl, cl
jne case.0x51a13d.9
cmp word [esi + 0x177c500], 0x6a
je case.0x51a13d.9
movsx ecx, word [esi + 0x177c2ce]
add ecx, 0xfffffffb
cmp ecx, 0x48
ja case.0x51a13d.9
xor edx, edx
mov dl, byte [ecx + 0x51c280]
jmp dword [edx*4 + 0x51c26c]
cmp dword [esp + 0x30], 0x21
je case.0x51a13d.9
mov word [esi + 0x177c618], 0xa
cmp word [esi + 0x177c500], 0x69
jne 0x51a16b
mov word [esi + 0x177c500], 0x65
mov ecx, dword [esp + 0x38]
mov word [esi + 0x177c5dc], 4
mov word [esi + 0x177c5de], di
mov dword [esi + 0x177c5e0], ecx
mov byte [esi + 0x177c638], 0
cmp word [ebp + 0x177c2ce], 0x2e
jne 0x51a1a3
mov edx, dword [esp + 0x34]
mov word [edx + 0x23a], 1
cmp word [esi + 0x177c330], 0
jne 0x51a1c9
mov cx, word [esi + 0x177c32c]
mov word [esi + 0x177c330], cx
mov dx, word [esi + 0x177c32e]
mov word [esi + 0x177c332], dx
push eax
mov ecx, 0x177bf80
call fcn.00525f20
jmp case.0x51a13d.9
cmp dword [esp + 0x30], 0x21
je case.0x51a13d.9
inc dword [esp + 0x18]
jmp case.0x51a13d.9
cmp dword [esp + 0x30], 0x21
je case.0x51a13d.9
mov byte [esi + 0x177c605], 5
mov word [esi + 0x177c5dc], 5
mov cx, word [ebp + 0x177c304]
mov word [esi + 0x177c628], cx
mov dx, word [ebp + 0x177c306]
mov word [esi + 0x177c62a], dx
mov word [esi + 0x177c5e4], 0xb
cmp word [esi + 0x177c330], 0
jne 0x51a248
mov cx, word [esi + 0x177c32c]
mov word [esi + 0x177c330], cx
mov dx, word [esi + 0x177c32e]
mov word [esi + 0x177c332], dx
push eax
mov ecx, 0x177bf80
call fcn.00525f20
mov word [esi + 0x177c618], 0xa
mov eax, dword [esp + 0x34]
movsx ecx, word [eax + 0x5c]
cmp ebx, ecx
jl 0x51a0cf
mov eax, dword [esp + 0x18]
test eax, eax
je case.0x519ad8.21
mov edx, dword [esp + 0x34]
movsx eax, word [edx + 0x5a]
lea ecx, [eax + eax*8]
lea esi, [eax + ecx*8]
shl esi, 4
mov edx, dword [esi + 0x177c314]
movsx ecx, word [esi + 0x177c304]
movsx ebx, word [edx*2 + 0x131be90]
movsx edx, word [esi + 0x177c306]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x1c], edx
lea ecx, [esp + 0x1c]
lea edx, [esp + 0x20]
push ecx
mov ecx, dword [esp + 0x18]
push edx
push edi
push eax
call fcn.0051c750
movsx eax, word [esi + 0x177c2d6]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
push eax
mov eax, dword [esp + 0x24]
push ebx
push ecx
mov ecx, dword [esp + 0x38]
push edx
push eax
push edi
push ecx
mov ecx, 0x1cd0f70
call fcn.00499490
mov ebp, dword [esp + 0x34]
mov edx, dword [esp + 0x38]
lea eax, [edi + edi*8]
mov word [ebp + 0x2e8], di
mov dword [ebp + 0x2ec], edx
lea eax, [edi + eax*8]
shl eax, 4
mov ecx, dword [eax + 0x177c314]
mov dword [ebp + 0x2f0], ecx
movsx ecx, word [eax + 0x177c32e]
movsx eax, word [eax + 0x177c32c]
lea edx, [ecx + ecx*2]
mov ecx, dword [edx*4 + 0xb2ef10]
add ecx, eax
xor eax, eax
mov dword [ebp + 0x2dc], ecx
cmp word [ebp + 0x5c], ax
mov dword [esp + 0x30], eax
mov dword [esp + 0x10], eax
jle 0x51a540
mov dword [esp + 0x34], 0x1ceb310
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x2c]
mov eax, ecx
inc ecx
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x14]
push eax
push edx
call fcn.0051ebb0
mov ebx, eax
lea eax, [ebx + ebx*8]
lea esi, [ebx + eax*8]
shl esi, 4
cmp word [esi + 0x177c2cc], 2
jne case.0x51a3c8.6
cmp word [esi + 0x177c4e0], 0
jne case.0x51a3c8.6
mov al, byte [esi + 0x177c653]
test al, al
jne case.0x51a3c8.6
cmp word [esi + 0x177c500], 0x6a
je case.0x51a3c8.6
movsx eax, word [esi + 0x177c2ce]
add eax, 0xfffffffb
cmp eax, 0x46
ja case.0x51a3c8.6
xor ecx, ecx
mov cl, byte [eax + 0x51c2d4]
jmp dword [ecx*4 + 0x51c2cc]
mov edx, dword [esp + 0x34]
mov eax, dword [edx]
test eax, eax
je case.0x51a3c8.6
movsx ecx, word [eax*2 + 0x9cd9a8]
mov dword [esp + 0x1c], ecx
lea edx, [ecx + ecx*2]
sub eax, dword [edx*4 + 0xb2ef10]
mov edx, dword [esp + 0x34]
cmp dword [edx + 4], 0
mov dword [esp + 0x20], eax
je 0x51a41d
mov edx, dword [esp + 0x38]
mov word [esi + 0x177c5dc], 4
mov word [esi + 0x177c5de], di
mov dword [esi + 0x177c5e0], edx
jmp 0x51a434
mov word [esi + 0x177c5dc], 0
cmp word [esi + 0x177c2ce], 0x37
je case.0x51a3c8.6
mov word [esi + 0x177c51c], ax
mov word [esi + 0x177c51e], cx
mov dword [esi + 0x177c5e8], 0
cmp word [esi + 0x177c500], 0x6a
jne 0x51a468
mov ax, word [esi + 0x177c58c]
imul ax, ax, 0xfffc
mov word [esi + 0x177c512], ax
cmp word [esi + 0x177c330], 0
jne 0x51a48e
mov cx, word [esi + 0x177c32c]
mov word [esi + 0x177c330], cx
mov dx, word [esi + 0x177c32e]
mov word [esi + 0x177c332], dx
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x14]
push eax
mov word [esi + 0x177c500], 0x65
call fcn.00518e90
test eax, eax
je 0x51a4b5
mov dword [0x1cd0ff8], 1
jmp 0x51a4bf
mov dword [0x1cd0ff0], 1
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
push 0
push ecx
push edx
push ebx
mov ecx, 0x177bf80
call fcn.0056d530
mov word [esi + 0x177c334], 0
mov word [esi + 0x177c5ec], 0xffce
movsx eax, word [esi + 0x177c586]
cmp eax, edi
je 0x51a505
mov eax, dword [esp + 0x3c]
mov word [esi + 0x177c586], di
inc word [eax + 0x177c5f2]
movsx eax, word [esi + 0x177c33c]
mov ecx, dword [esp + 0x30]
cdq
sub eax, edx
sar eax, 1
cmp eax, ecx
jle 0x51a51d
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x34]
mov dword [0x1cd0ff0], 0
add eax, 0xc
mov dword [esp + 0x34], eax
movsx ecx, word [ebp + 0x5c]
cmp dword [esp + 0x10], ecx
jl 0x51a350
mov edx, dword [esp + 0x30]
lea eax, [edx*8]
cmp eax, 8
jg 0x51a555
mov eax, 8
pop edi
mov word [ebp + 0x2e6], ax
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x18
ret 0x14
cmp word [ecx + 0x5c], si
jle case.0x519ad8.21
mov edi, dword [esp + 0x14]
mov ebp, 2
mov eax, esi
mov ecx, edi
push eax
push ebx
inc esi
call fcn.0051ebb0
lea ecx, [eax + eax*8]
lea eax, [eax + ecx*8]
shl eax, 4
cmp word [eax + 0x177c2cc], bp
jne 0x51a5c0
cmp word [eax + 0x177c4e0], 0
jne 0x51a5c0
movsx ecx, word [eax + 0x177c2ce]
cmp ecx, 0x27
jl 0x51a5c0
cmp ecx, 0x28
jg 0x51a5c0
mov word [eax + 0x177c5f0], 1
mov edx, dword [esp + 0x34]
movsx eax, word [edx + 0x5c]
cmp esi, eax
jl 0x51a57e
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x18
ret 0x14
mov word [ecx + 0x22e], si
mov edx, dword [ecx + 0x2c]
cmp word [ecx + 0x5c], si
mov dword [esp + 0x10], esi
mov dword [esp + 0x2c], edx
jle case.0x519ad8.21
mov ecx, dword [esp + 0x10]
mov eax, ecx
inc ecx
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x14]
push eax
push ebx
call fcn.0051ebb0
lea ecx, [eax + eax*8]
lea esi, [eax + ecx*8]
shl esi, 4
cmp word [esi + 0x177c2cc], 2
jne case.0x51a64d.24
cmp word [esi + 0x177c4e0], 0
jne case.0x51a64d.24
movsx ecx, word [esi + 0x177c2ce]
add ecx, 0xffffffea
cmp ecx, 0x37
ja case.0x51a64d.24
xor edx, edx
mov dl, byte [ecx + 0x51c328]
jmp dword [edx*4 + 0x51c31c]
cmp word [esi + 0x177c500], 0x69
jne 0x51a667
mov word [esi + 0x177c500], 0x65
mov ecx, dword [esp + 0x30]
mov byte [esi + 0x177c638], 0
mov word [esi + 0x177c5dc], cx
jmp 0x51a68d
cmp word [esi + 0x177c5f4], 0
je case.0x51a64d.24
mov ecx, dword [esp + 0x30]
cmp ecx, 0x16
mov byte [esi + 0x177c605], cl
jne 0x51a717
mov cx, word [esi + 0x177c2ce]
cmp cx, 0x27
je 0x51a6ab
cmp cx, 0x28
jne 0x51a717
mov edx, dword [esp + 0x2c]
mov ecx, edx
shl ecx, 5
sub ecx, edx
lea ecx, [ecx + ecx*4]
shl ecx, 1
sub ecx, edx
lea ecx, [ecx + ecx*2]
lea edx, [edx + ecx*4]
mov ecx, dword [edx*4 + 0xd5f580]
test ecx, ecx
jle 0x51a710
lea ecx, [edi*8]
mov word [esi + 0x177c5dc], 0x16
mov word [esi + 0x177c2fe], cx
lea edx, [ebp*8]
lea ecx, [ebp + ebp*2]
mov word [esi + 0x177c300], dx
mov edx, dword [ecx*4 + 0xb2ef10]
movzx cx, byte [edx + edi + 0x12579f0]
mov word [esi + 0x177c302], cx
jmp 0x51a717
mov byte [esi + 0x177c605], 5
mov dx, word [esp + 0x3c]
mov word [esi + 0x177c628], di
mov word [esi + 0x177c62a], bp
xor ecx, ecx
mov word [esi + 0x177c5e4], dx
mov word [esi + 0x177c330], cx
mov word [esi + 0x177c332], cx
push eax
mov ecx, 0x177bf80
call fcn.00525f20
mov word [esi + 0x177c618], 0xa
mov eax, dword [esp + 0x34]
movsx ecx, word [eax + 0x5c]
cmp dword [esp + 0x10], ecx
jl 0x51a5f7
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x18
ret 0x14
mov eax, dword [esp + 0x34]
xor ebp, ebp
mov word [eax + 0x22e], bp
cmp word [eax + 0x5c], bp
jle case.0x519ad8.21
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x14]
mov eax, ebp
inc ebp
push eax
push edx
call fcn.0051ebb0
mov ebx, eax
lea eax, [ebx + ebx*8]
lea esi, [ebx + eax*8]
shl esi, 4
cmp word [esi + 0x177c2cc], 2
jne 0x51a821
cmp word [esi + 0x177c4e0], 0
jne 0x51a821
cmp word [esi + 0x177c2ce], 0x1e
jne 0x51a821
mov eax, dword [esp + 0x38]
mov word [esi + 0x177c5dc], 0x14
mov word [esi + 0x177c628], di
mov word [esi + 0x177c62a], ax
mov word [esi + 0x177c51c], di
push ebx
mov ecx, 0x177bf80
mov word [esi + 0x177c51e], ax
call fcn.005705c0
mov ecx, dword [esp + 0x34]
push 0
push ebx
mov edx, dword [ecx + 0x2c]
mov ecx, 0x177bf80
push edx
call fcn.005720e0
xor eax, eax
mov word [esi + 0x177c330], ax
mov word [esi + 0x177c332], ax
mov eax, dword [esp + 0x34]
movsx ecx, word [eax + 0x5c]
cmp ebp, ecx
jl 0x51a78d
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x18
ret 0x14
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x38]
lea ebx, [edi + edi*4]
xor ebp, ebp
shl ebx, 2
mov word [eax + 0x22e], bp
cmp dword [ebx + 0x14f7048], edx
jne case.0x519ad8.21
cmp word [eax + 0x5c], bp
jle case.0x519ad8.21
mov ecx, dword [esp + 0x14]
mov eax, ebp
push eax
mov eax, dword [esp + 0x30]
push eax
inc ebp
call fcn.0051ebb0
lea ecx, [eax + eax*8]
lea esi, [eax + ecx*8]
shl esi, 4
cmp word [esi + 0x177c2cc], 2
jne 0x51a94c
xor ecx, ecx
cmp word [esi + 0x177c4e0], cx
jne 0x51a94c
mov word [esi + 0x177c330], cx
mov word [esi + 0x177c332], cx
movsx ecx, word [esi + 0x177c2ce]
cmp ecx, 0x16
je 0x51a8c8
cmp ecx, 0x46
jne 0x51a94c
mov dx, word [ebx + 0x14f704e]
mov cx, word [ebx + 0x14f7050]
shl dx, 3
add edx, 4
push eax
shl cx, 3
mov word [esi + 0x177c2fe], dx
mov edx, dword [ebx + 0x14f7044]
add ecx, 4
mov word [esi + 0x177c300], cx
movzx cx, byte [edx + 0x12579f0]
mov edx, dword [esp + 0x3c]
mov word [esi + 0x177c302], cx
mov word [esi + 0x177c584], 0xffff
mov word [esi + 0x177c576], di
mov dword [esi + 0x177c5e0], edx
mov byte [esi + 0x177c605], 0x22
mov word [esi + 0x177c5dc], 0x22
mov ecx, 0x177bf80
mov byte [esi + 0x177c638], 0
call fcn.00525f20
mov word [esi + 0x177c618], 0xa
mov eax, dword [esp + 0x34]
movsx ecx, word [eax + 0x5c]
cmp ebp, ecx
jl 0x51a86d
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x18
ret 0x14
mov word [ecx + 0x2f8], di
mov dword [ecx + 0x2fc], ebp
mov word [ecx + 0x22e], si
cmp word [ecx + 0x5c], si
mov dword [esp + 0x10], esi
mov dword [esp + 0x18], esi
jle 0x51abe1
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x2c]
mov eax, ecx
inc ecx
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x14]
push eax
push edx
call fcn.0051ebb0
mov ebx, eax
lea eax, [ebx + ebx*8]
lea esi, [ebx + eax*8]
shl esi, 4
cmp word [esi + 0x177c2cc], 2
jne case.0x51aa0a.11
xor eax, eax
cmp word [esi + 0x177c4e0], ax
jne case.0x51aa0a.11
mov cl, byte [esi + 0x177c653]
test cl, cl
jne case.0x51aa0a.11
mov word [esi + 0x177c330], ax
mov word [esi + 0x177c332], ax
movsx eax, word [esi + 0x177c2ce]
add eax, 0xfffffffb
cmp eax, 0x48
ja case.0x51aa0a.11
xor ecx, ecx
mov cl, byte [eax + 0x51c37c]
jmp dword [ecx*4 + 0x51c360]
inc dword [esp + 0x1c]
mov eax, dword [esp + 0x30]
cmp eax, 0x24
jne 0x51aa4d
lea eax, [edi + edi*4]
lea edx, [eax + eax*4]
lea eax, [edi + edx*4]
lea ecx, [edi + eax*2]
movsx eax, word [ecx*4 + 0x1a46596]
add eax, 0xffffffd3
cmp eax, 0x21
ja case.0x51aa0a.5
xor edx, edx
mov dl, byte [eax + 0x51c3d0]
jmp dword [edx*4 + 0x51c3c8]
cmp eax, 0x26
je case.0x51aa0a.11
cmp word [esi + 0x177c500], 0x69
jne 0x51aa69
mov word [esi + 0x177c500], 0x65
lea eax, [edi + edi*4]
push ebx
lea eax, [eax + eax*4]
lea ecx, [edi + eax*4]
lea ecx, [edi + ecx*2]
shl ecx, 2
mov eax, dword [ecx + 0x1a465bc]
shl eax, 3
cdq
sub eax, edx
mov dx, word [ecx + 0x1a465b2]
sar eax, 1
shl dx, 3
add edx, eax
mov word [esi + 0x177c2fe], dx
mov dx, word [ecx + 0x1a465b4]
shl dx, 3
add edx, eax
mov ax, word [ecx + 0x1a465b0]
mov word [esi + 0x177c300], dx
mov word [esi + 0x177c302], ax
mov word [esi + 0x177c584], 0xffff
mov word [esi + 0x177c576], di
mov dword [esi + 0x177c5e0], ebp
mov byte [esi + 0x177c605], 9
mov word [esi + 0x177c5dc], 9
mov ecx, 0x177bf80
mov byte [esi + 0x177c638], 0
call fcn.00525f20
mov word [esi + 0x177c618], 0xa
jmp case.0x51aa0a.11
cmp dword [esp + 0x30], 0x26
je case.0x51aa0a.11
lea eax, [edi + edi*4]
lea ecx, [eax + eax*4]
lea edx, [edi + ecx*4]
lea eax, [edi + edx*2]
cmp word [eax*4 + 0x1a46596], 0x44
je case.0x51aa0a.11
mov word [esi + 0x177c576], di
mov dword [esi + 0x177c5e0], ebp
mov byte [esi + 0x177c605], 9
mov word [esi + 0x177c5dc], 9
push ebx
mov ecx, 0x177bf80
mov byte [esi + 0x177c638], 0
call fcn.00525f20
mov word [esi + 0x177c618], 0xa
jmp case.0x51aa0a.11
lea eax, [edi + edi*4]
lea ecx, [eax + eax*4]
lea edx, [edi + ecx*4]
lea eax, [edi + edx*2]
cmp word [eax*4 + 0x1a46596], 0x44
je case.0x51aa0a.11
cmp word [esi + 0x177c5f4], 4
jne case.0x51aa0a.11
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
inc ecx
inc eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], eax
jmp case.0x51aa0a.11
lea eax, [edi + edi*4]
lea ecx, [eax + eax*4]
lea edx, [edi + ecx*4]
lea eax, [edi + edx*2]
cmp word [eax*4 + 0x1a46596], 0x44
je case.0x51aa0a.5
inc dword [esp + 0x1c]
lea eax, [edi + edi*4]
lea ecx, [eax + eax*4]
lea edx, [edi + ecx*4]
lea eax, [edi + edx*2]
cmp word [eax*4 + 0x1a46596], 0x44
je case.0x51aa0a.11
inc dword [esp + 0x18]
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x10]
movsx edx, word [ecx + 0x5c]
cmp eax, edx
jl 0x51a991
mov eax, dword [0x16845d0]
test eax, eax
je 0x51ac15
mov eax, dword [0xd7dfe0]
test eax, eax
je 0x51ac15
lea eax, [edi + edi*4]
lea eax, [eax + eax*4]
lea ecx, [edi + eax*4]
lea edx, [edi + ecx*2]
movsx eax, word [edx*4 + 0x1a46596]
cmp eax, 0x4a
jl 0x51ac15
cmp eax, 0x4e
jle case.0x519ad8.21
mov eax, dword [esp + 0x18]
test eax, eax
je case.0x519ad8.21
mov eax, dword [esp + 0x34]
movsx eax, word [eax + 0x5a]
lea ecx, [eax + eax*8]
lea eax, [eax + ecx*8]
shl eax, 4
mov edx, dword [eax + 0x177c314]
movsx ecx, word [edx*2 + 0x131be90]
mov edx, dword [esp + 0x30]
cmp edx, 9
je 0x51ac52
cmp edx, 0x26
je 0x51ac52
push 0
jmp 0x51ac5a
movsx edx, word [eax + 0x177c2d6]
push edx
mov eax, dword [esp + 0x1c]
push ecx
mov ecx, dword [esp + 0x34]
push eax
push edi
push ecx
mov ecx, 0x1cd0f70
call fcn.00499040
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x14]
push edx
push eax
call fcn.0051c5a0
mov eax, dword [0x1ceb314]
test eax, eax
je case.0x519ad8.21
mov ecx, dword [esp + 0x34]
xor eax, eax
cmp word [ecx + 0x5c], ax
jle case.0x519ad8.21
mov dword [esp + 0x3c], 0x1ceb314
jmp 0x51acae
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x2c]
mov ecx, eax
inc eax
push ecx
mov ecx, dword [esp + 0x18]
push edx
mov dword [esp + 0x18], eax
call fcn.0051ebb0
mov ebx, eax
lea eax, [ebx + ebx*8]
lea esi, [ebx + eax*8]
shl esi, 4
cmp word [esi + 0x177c2cc], 2
jne case.0x51ad17.7
cmp word [esi + 0x177c4e0], 0
jne case.0x51ad17.7
mov al, byte [esi + 0x177c653]
test al, al
jne case.0x51ad17.7
mov bp, word [esi + 0x177c2ce]
movsx eax, bp
add eax, 0xfffffffb
cmp eax, 0x47
ja case.0x51ad17.7
xor ecx, ecx
mov cl, byte [eax + 0x51c400]
jmp dword [ecx*4 + 0x51c3f4]
cmp dword [esp + 0x30], 0x24
jne case.0x51ad17.7
cmp bp, 0x3b
jne 0x51ae1e
cmp word [esi + 0x177c5f4], 4
jne case.0x51ad17.7
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x51ae1e
lea edx, [esp + 0x24]
mov ecx, 0x1cd0f70
push edx
push edi
push ebx
call fcn.0049a3a0
test eax, eax
mov dword [esp + 0x20], 1
je 0x51ae1e
movsx ebp, word [eax*2 + 0x9cd9a8]
push 0
push ebp
lea ecx, [ebp + ebp*2]
mov edx, dword [ecx*4 + 0xb2ef10]
mov ecx, 0x177bf80
sub eax, edx
push eax
push ebx
mov dword [esp + 0x48], eax
call fcn.0056d530
test eax, eax
je 0x51ae1e
mov dx, word [esp + 0x38]
xor eax, eax
mov word [esi + 0x177c5dc], ax
mov word [esi + 0x177c51c], dx
mov word [esi + 0x177c51e], bp
cmp word [esi + 0x177c500], 0x6a
jne 0x51add6
mov cx, word [esi + 0x177c58c]
imul cx, cx, 0xfffc
mov word [esi + 0x177c512], cx
mov word [esi + 0x177c500], 0x65
mov dword [0x1cd0ff0], eax
mov word [esi + 0x177c586], ax
mov eax, dword [esp + 0x24]
mov dword [esi + 0x177c5e8], eax
mov cx, word [eax*2 + 0x9cd9a8]
mov word [esi + 0x177c62a], cx
movsx ecx, cx
lea edx, [ecx + ecx*2]
sub ax, word [edx*4 + 0xb2ef10]
mov word [esi + 0x177c628], ax
jmp case.0x51ad17.7
mov eax, dword [esp + 0x3c]
mov eax, dword [eax - 4]
test eax, eax
je case.0x51ad17.7
movsx ebp, word [eax*2 + 0x9cd9a8]
mov word [esi + 0x177c5dc], 0
lea ecx, [ebp + ebp*2]
sub eax, dword [ecx*4 + 0xb2ef10]
mov word [esi + 0x177c51c], ax
mov word [esi + 0x177c51e], bp
cmp word [esi + 0x177c500], 0x6a
mov dword [esp + 0x38], eax
jne 0x51ae77
mov dx, word [esi + 0x177c58c]
imul dx, dx, 0xfffc
mov word [esi + 0x177c512], dx
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x14]
push eax
mov word [esi + 0x177c500], 0x65
call fcn.00518e90
test eax, eax
je 0x51ae9e
mov dword [0x1cd0ff8], 1
jmp 0x51aea8
mov dword [0x1cd0ff0], 1
mov ecx, dword [esp + 0x38]
push 0
push ebp
push ecx
push ebx
mov ecx, 0x177bf80
call fcn.0056d530
mov ecx, dword [esp + 0x3c]
xor eax, eax
mov dword [0x1cd0ff0], eax
mov word [esi + 0x177c586], ax
mov eax, dword [ecx]
mov dword [esi + 0x177c5e8], eax
mov ax, word [eax*2 + 0x9cd9a8]
mov word [esi + 0x177c62a], ax
movsx eax, ax
lea edx, [eax + eax*2]
mov ax, word [ecx]
sub ax, word [edx*4 + 0xb2ef10]
add ecx, 0xc
mov dword [esp + 0x3c], ecx
mov word [esi + 0x177c628], ax
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x10]
movsx edx, word [ecx + 0x5c]
cmp eax, edx
jl 0x51acaa
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x18
ret 0x14
mov eax, dword [esp + 0x34]
xor ebp, ebp
mov dword [esp + 0x18], ebp
mov word [eax + 0x22e], bp
cmp word [eax + 0x5c], bp
jle 0x51b0d3
mov ecx, dword [esp + 0x14]
mov eax, ebp
push eax
mov eax, dword [esp + 0x30]
inc ebp
push eax
mov dword [esp + 0x18], ebp
call fcn.0051ebb0
mov ebx, eax
lea ecx, [ebx + ebx*8]
lea esi, [ebx + ecx*8]
shl esi, 4
cmp word [esi + 0x177c2cc], 2
jne case.0x51afb7.12
cmp word [esi + 0x177c4e0], 0
jne case.0x51afb7.12
mov al, byte [esi + 0x177c653]
test al, al
jne case.0x51afb7.12
xor eax, eax
mov word [esi + 0x177c330], ax
mov word [esi + 0x177c332], ax
movsx eax, word [esi + 0x177c2ce]
add eax, 0xfffffffb
cmp eax, 0x48
ja case.0x51afb7.12
xor edx, edx
mov dl, byte [eax + 0x51c468]
jmp dword [edx*4 + 0x51c448]
inc dword [esp + 0x1c]
cmp dword [esp + 0x30], 0x23
je case.0x51afb7.5
jmp case.0x51afb7.12
cmp dword [esp + 0x30], 0x25
je case.0x51afb7.12
mov eax, dword [esp + 0x38]
mov word [esi + 0x177c576], di
mov dword [esi + 0x177c5e0], eax
mov ax, word [edi*2 + 0x9cd9a8]
mov word [esi + 0x177c62a], ax
mov dx, di
movsx eax, ax
push ebx
lea ecx, [eax + eax*2]
sub dx, word [ecx*4 + 0xb2ef10]
mov ecx, 0x177bf80
mov word [esi + 0x177c628], dx
mov byte [esi + 0x177c605], 0x17
mov word [esi + 0x177c5dc], 0x17
call fcn.00525f20
mov word [esi + 0x177c618], 0xa
jmp case.0x51afb7.12
push edi
push ebx
mov ecx, 0x177bf80
call fcn.00572630
mov ebp, eax
test ebp, ebp
je 0x51b0bf
movsx eax, word [ebp*2 + 0x9cd9a8]
push 0
push eax
lea eax, [eax + eax*2]
mov ecx, ebp
sub ecx, dword [eax*4 + 0xb2ef10]
push ecx
push ebx
mov ecx, 0x177bf80
call fcn.0056d530
mov ax, word [edi*2 + 0x9cd9a8]
mov word [esi + 0x177c5dc], 0x17
mov word [esi + 0x177c500], 0x65
mov word [esi + 0x177c576], di
mov dword [esi + 0x177c5e8], edi
mov dword [esi + 0x177c5f8], ebp
mov word [esi + 0x177c62a], ax
movsx eax, ax
lea edx, [eax + eax*2]
mov ax, di
sub ax, word [edx*4 + 0xb2ef10]
mov word [esi + 0x177c628], ax
mov ebp, dword [esp + 0x10]
mov ecx, dword [esp + 0x34]
movsx edx, word [ecx + 0x5c]
cmp ebp, edx
jl 0x51af41
mov eax, dword [0x16845d0]
test eax, eax
je 0x51b0e9
mov eax, dword [0xd7dfe0]
mov edx, dword [esp + 0x24]
test eax, eax
jne 0x51b0ed
mov edx, dword [esp + 0x18]
test edx, edx
je case.0x519ad8.21
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 0x30]
movsx eax, word [eax + 0x5a]
lea ecx, [eax + eax*8]
lea eax, [eax + ecx*8]
shl eax, 4
cmp esi, 0x17
mov ecx, dword [eax + 0x177c314]
movsx ecx, word [ecx*2 + 0x131be90]
je 0x51b14b
cmp esi, 0x25
je 0x51b14b
movsx eax, word [eax + 0x177c4f4]
push eax
push 0
push 0
jmp 0x51b15d
cmp word [esi + 0x177c5f4], 4
jne case.0x51afb7.12
inc dword [esp + 0x24]
inc dword [esp + 0x1c]
inc dword [esp + 0x18]
jmp case.0x51afb7.12
movsx esi, word [eax + 0x177c4f4]
movsx eax, word [eax + 0x177c2d6]
push esi
push 0
push eax
push ecx
push edx
push edi
mov ecx, 0x1cd0f70
call fcn.00499a70
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x2c]
push ecx
mov ecx, dword [esp + 0x18]
push edx
call fcn.0051c5a0
mov eax, dword [0x1ceb314]
test eax, eax
je case.0x519ad8.21
mov eax, dword [esp + 0x34]
xor ecx, ecx
cmp word [eax + 0x5c], cx
jle case.0x519ad8.21
mov dword [esp + 0x3c], 0x1ceb314
jmp 0x51b1a8
mov ecx, dword [esp + 0x10]
mov eax, ecx
inc ecx
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x2c]
push eax
push ecx
mov ecx, dword [esp + 0x1c]
call fcn.0051ebb0
mov ebx, eax
lea edx, [ebx + ebx*8]
lea esi, [ebx + edx*8]
shl esi, 4
cmp word [esi + 0x177c2cc], 2
jne case.0x51b211.8
cmp word [esi + 0x177c4e0], 0
jne case.0x51b211.8
mov al, byte [esi + 0x177c653]
test al, al
jne case.0x51b211.8
mov bp, word [esi + 0x177c2ce]
movsx eax, bp
add eax, 0xfffffffb
cmp eax, 0x47
ja case.0x51b211.8
xor ecx, ecx
mov cl, byte [eax + 0x51c4c4]
jmp dword [ecx*4 + 0x51c4b4]
cmp dword [esp + 0x30], 0x23
jne case.0x51b211.8
mov eax, dword [0x16845d0]
test eax, eax
je case.0x51b211.7
mov eax, dword [0xd7dfe0]
test eax, eax
jne case.0x51b211.8
cmp bp, 0x3b
jne 0x51b324
cmp word [esi + 0x177c5f4], 4
jne case.0x51b211.8
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x51b324
push edi
push ebx
mov ecx, 0x1cd0f70
mov dword [esp + 0x28], 1
call fcn.0049a2c0
test eax, eax
je 0x51b324
movsx ebp, word [eax*2 + 0x9cd9a8]
push 0
push ebp
lea edx, [ebp + ebp*2]
mov ecx, dword [edx*4 + 0xb2ef10]
sub eax, ecx
mov ecx, 0x177bf80
push eax
push ebx
mov dword [esp + 0x48], eax
call fcn.0056d530
test eax, eax
je 0x51b324
mov cx, word [esp + 0x38]
xor eax, eax
mov word [esi + 0x177c5dc], ax
mov word [esi + 0x177c51c], cx
mov word [esi + 0x177c51e], bp
cmp word [esi + 0x177c500], 0x6a
jne 0x51b2dd
mov dx, word [esi + 0x177c58c]
imul dx, dx, 0xfffc
mov word [esi + 0x177c512], dx
mov word [esi + 0x177c500], 0x65
mov dword [0x1cd0ff0], eax
mov word [esi + 0x177c586], ax
mov ax, word [edi*2 + 0x9cd9a8]
mov dword [esi + 0x177c5e8], edi
mov word [esi + 0x177c62a], ax
movsx eax, ax
mov cx, di
lea eax, [eax + eax*2]
sub cx, word [eax*4 + 0xb2ef10]
mov word [esi + 0x177c628], cx
jmp case.0x51b211.8
mov edx, dword [esp + 0x3c]
mov ecx, dword [edx - 4]
test ecx, ecx
je case.0x51b211.8
movsx eax, word [ecx*2 + 0x9cd9a8]
mov dword [0x1cd0ff0], 1
lea edx, [eax + eax*2]
mov ebp, dword [edx*4 + 0xb2ef10]
sub ecx, ebp
xor ebp, ebp
mov word [esi + 0x177c5dc], bp
mov word [esi + 0x177c51c], cx
mov word [esi + 0x177c51e], ax
cmp word [esi + 0x177c500], 0x6a
jne 0x51b384
mov dx, word [esi + 0x177c58c]
imul dx, dx, 0xfffc
mov word [esi + 0x177c512], dx
push ebp
push eax
push ecx
push ebx
mov ecx, 0x177bf80
mov word [esi + 0x177c500], 0x65
call fcn.0056d530
mov ecx, dword [esp + 0x3c]
mov dword [0x1cd0ff0], ebp
mov word [esi + 0x177c586], bp
mov eax, dword [ecx]
mov dx, word [ecx]
mov dword [esi + 0x177c5e8], eax
mov ax, word [eax*2 + 0x9cd9a8]
mov word [esi + 0x177c62a], ax
movsx eax, ax
lea eax, [eax + eax*2]
sub dx, word [eax*4 + 0xb2ef10]
add ecx, 0xc
mov dword [esp + 0x3c], ecx
mov word [esi + 0x177c628], dx
mov eax, dword [esp + 0x34]
movsx ecx, word [eax + 0x5c]
cmp dword [esp + 0x10], ecx
jl 0x51b1a4
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x18
ret 0x14
mov word [ecx + 0x22e], si
cmp word [ecx + 0x5c], si
mov dword [esp + 0x18], esi
jle case.0x519ad8.21
mov ebp, dword [esp + 0x14]
mov eax, esi
mov ecx, ebp
push eax
push ebx
inc esi
call fcn.0051ebb0
lea edx, [eax + eax*8]
lea eax, [eax + edx*8]
shl eax, 4
cmp word [eax + 0x177c2cc], 2
jne 0x51b467
xor ecx, ecx
cmp word [eax + 0x177c4e0], cx
jne 0x51b467
cmp word [eax + 0x177c2ce], 0x1d
jne 0x51b467
mov edx, dword [esp + 0x18]
mov word [eax + 0x177c330], cx
inc edx
mov word [eax + 0x177c332], cx
mov dword [esp + 0x18], edx
mov eax, dword [esp + 0x34]
movsx ecx, word [eax + 0x5c]
cmp esi, ecx
jl 0x51b41c
mov eax, dword [esp + 0x18]
test eax, eax
je case.0x519ad8.21
mov edx, dword [esp + 0x34]
movsx eax, word [edx + 0x5a]
lea ecx, [eax + eax*8]
lea eax, [eax + ecx*8]
shl eax, 4
movsx edx, word [eax + 0x177c2d6]
mov eax, dword [eax + 0x177c314]
push edx
mov edx, dword [esp + 0x1c]
movsx ecx, word [eax*2 + 0x131be90]
push ecx
push edx
push edi
mov ecx, 0x1cd0f70
call fcn.00499ee0
push 0
push ebx
mov ecx, ebp
call fcn.0051c5a0
mov eax, dword [0x1ceb314]
test eax, eax
je case.0x519ad8.21
mov eax, dword [esp + 0x34]
xor ebp, ebp
cmp word [eax + 0x5c], bp
jle case.0x519ad8.21
mov edi, 0x1ceb314
mov ecx, dword [esp + 0x14]
mov eax, ebp
inc ebp
push eax
push ebx
mov dword [esp + 0x18], ebp
call fcn.0051ebb0
lea ecx, [eax + eax*8]
lea esi, [eax + ecx*8]
shl esi, 4
cmp word [esi + 0x177c2cc], 2
jne 0x51b5e4
cmp word [esi + 0x177c4e0], 0
jne 0x51b5e4
cmp word [esi + 0x177c2ce], 0x1d
jne 0x51b5e4
mov edx, dword [edi - 4]
test edx, edx
je 0x51b5e4
movsx ecx, word [edx*2 + 0x9cd9a8]
mov word [esi + 0x177c5dc], 0
mov dword [0x1cd0ff0], 1
lea ebp, [ecx + ecx*2]
sub edx, dword [ebp*4 + 0xb2ef10]
mov word [esi + 0x177c51c], dx
mov word [esi + 0x177c51e], cx
cmp word [esi + 0x177c500], 0x6a
jne 0x51b582
mov bp, word [esi + 0x177c58c]
imul bp, bp, 0xfffc
mov word [esi + 0x177c512], bp
mov ebp, dword [edi]
push 0
neg ebp
sbb ebp, ebp
push ecx
and ebp, 2
push edx
add ebp, 0x65
push eax
mov ecx, 0x177bf80
mov word [esi + 0x177c500], bp
call fcn.0056d530
mov dword [0x1cd0ff0], 0
mov eax, dword [edi]
mov dword [esi + 0x177c5e8], eax
mov ebp, dword [esp + 0x10]
mov ax, word [eax*2 + 0x9cd9a8]
mov word [esi + 0x177c62a], ax
movsx eax, ax
lea edx, [eax + eax*2]
mov ax, word [edi]
sub ax, word [edx*4 + 0xb2ef10]
add edi, 0xc
mov word [esi + 0x177c628], ax
mov ecx, dword [esp + 0x34]
movsx edx, word [ecx + 0x5c]
cmp ebp, edx
jl 0x51b4e3
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x18
ret 0x14
movsx eax, word [ecx + 0x5a]
lea edx, [eax + eax*8]
lea eax, [eax + edx*8]
shl eax, 4
mov edx, dword [eax + 0x177c314]
movsx eax, word [edx*2 + 0x131be90]
cmp eax, esi
mov word [ecx + 0x22e], si
je case.0x519ad8.6
push ebp
push edi
push eax
mov eax, dword [esp + 0x40]
mov ecx, dword [eax + 0x2c]
push ecx
mov ecx, 0x1cd0f70
call fcn.00495df0
test eax, eax
je case.0x519ad8.21
mov edi, dword [0x1cd0f88]
mov ebp, dword [0x1cd0f8c]
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x14]
xor esi, esi
push esi
push 1
push esi
push ebp
push edi
push ebx
mov word [edx + 0x22e], si
call fcn.00517f80
mov eax, dword [esp + 0x34]
cmp word [eax + 0x5c], si
jle case.0x519ad8.21
mov ecx, dword [esp + 0x14]
mov eax, esi
push eax
push ebx
inc esi
call fcn.0051ebb0
lea ecx, [eax + eax*8]
lea eax, [eax + ecx*8]
shl eax, 4
cmp word [eax + 0x177c2cc], 2
jne case.0x51b6c7.23
cmp word [eax + 0x177c4e0], 0
jne case.0x51b6c7.23
movsx ecx, word [eax + 0x177c2ce]
add ecx, 0xffffffea
cmp ecx, 0x31
ja case.0x51b6c7.23
xor edx, edx
mov dl, byte [ecx + 0x51c514]
jmp dword [edx*4 + 0x51c50c]
cmp word [eax + 0x177c500], 0x69
jne 0x51b6e1
mov word [eax + 0x177c500], 0x65
mov cx, word [esp + 0x30]
mov dx, word [esp + 0x18]
mov word [eax + 0x177c5dc], cx
mov cx, word [esp + 0x10]
mov word [eax + 0x177c628], di
mov word [eax + 0x177c62a], bp
mov word [eax + 0x177c550], dx
mov word [eax + 0x177c552], cx
xor ecx, ecx
mov dword [eax + 0x177c5e8], ecx
mov word [eax + 0x177c586], cx
mov word [eax + 0x177c330], cx
mov word [eax + 0x177c332], cx
mov edx, dword [esp + 0x34]
movsx eax, word [edx + 0x5c]
cmp esi, eax
jl 0x51b67d
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x18
ret 0x14
lea eax, [edi + edi*4]
mov ebx, dword [esp + 0x34]
xor esi, esi
lea ecx, [eax + eax*4]
mov word [ebx + 0x22e], si
mov dword [esp + 0x10], esi
lea edx, [edi + ecx*4]
lea ebp, [edi + edx*2]
shl ebp, 2
movsx ecx, word [ebp + 0x1a465c2]
movsx eax, word [ebp + 0x1a465c4]
cmp ecx, esi
jl 0x51b7a7
cmp ecx, 0x190
jge 0x51b7a7
cmp eax, esi
jl 0x51b7a7
cmp eax, 0x190
jge 0x51b7a7
lea edx, [eax + eax*4]
lea edx, [edx + edx*4]
shl edx, 4
cmp byte [edx + ecx + 0x9a68a8], 0
jne 0x51b7b3
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x18
ret 0x14
lea eax, [eax + eax*2]
push edi
mov edx, dword [eax*4 + 0xb2ef10]
add edx, ecx
mov ecx, 0x1a464b0
movsx eax, word [edx*2 + 0x131be90]
mov dword [esp + 0x40], eax
call fcn.00421730
cmp eax, esi
mov dword [esp + 0x38], eax
jne 0x51b7ec
cmp word [ebp + 0x1a46596], 0x1c
jne case.0x519ad8.21
cmp word [ebx + 0x5c], si
jle case.0x519ad8.21
mov ecx, dword [esp + 0x10]
mov eax, ecx
inc ecx
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x2c]
push eax
push ecx
mov ecx, dword [esp + 0x1c]
call fcn.0051ebb0
mov ebx, eax
lea edx, [ebx + ebx*8]
lea esi, [ebx + edx*8]
shl esi, 4
cmp word [esi + 0x177c2cc], 2
jne 0x51b999
cmp word [esi + 0x177c4e0], 0
jne 0x51b999
mov cx, word [esi + 0x177c2ce]
cmp cx, 0x1e
jne 0x51b999
mov ax, word [esi + 0x177c500]
cmp ax, 9
je 0x51b999
cmp ax, 0xa
je 0x51b999
cmp ax, 0xb
je 0x51b999
cmp ax, 0xc
je 0x51b999
cmp ax, 0xd
je 0x51b999
cmp ax, 0xe
je 0x51b999
cmp ax, 0xf
je 0x51b999
cmp cx, cx
jne 0x51b999
xor eax, eax
mov word [esi + 0x177c330], ax
mov word [esi + 0x177c332], ax
movsx eax, word [esi + 0x177c306]
movsx ecx, word [esi + 0x177c304]
push eax
push ecx
push 1
push edi
mov ecx, 0x1a464b0
call fcn.0040d160
test eax, eax
je 0x51b999
mov edx, dword [esi + 0x177c314]
push 0
movsx ecx, word [esi + 0x177c2d6]
movsx eax, word [edx*2 + 0x131be90]
push eax
mov eax, dword [esp + 0x44]
push eax
push ecx
mov ecx, 0x1cd0f70
call fcn.0049db40
test eax, eax
je 0x51b999
movsx eax, word [ebp + 0x1a465c4]
movsx ecx, word [ebp + 0x1a465c2]
mov edx, dword [ebp + 0x1a4659c]
push 0
push eax
push ecx
mov word [esi + 0x177c576], di
push ebx
mov ecx, 0x177bf80
mov dword [esi + 0x177c2e0], edx
call fcn.0056d530
cmp word [ebp + 0x1a46596], 0x1c
jne 0x51b94f
mov word [esi + 0x177c500], 9
mov word [esi + 0x177c578], di
jmp 0x51b999
mov ecx, dword [esp + 0x10]
mov word [esi + 0x177c500], 8
dec ecx
push ebx
mov dword [esp + 0x14], ecx
mov ecx, 0x177bf80
mov word [esi + 0x177c5c8], 0
call fcn.005705c0
mov edx, dword [esp + 0x34]
push 0
push ebx
mov ecx, 0x177bf80
mov eax, dword [edx + 0x2c]
push eax
call fcn.005720e0
mov eax, dword [esp + 0x38]
dec eax
mov dword [esp + 0x38], eax
je case.0x519ad8.21
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x10]
movsx edx, word [ecx + 0x5c]
cmp eax, edx
jl 0x51b7f6
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x18
ret 0x14
mov eax, dword [esp + 0x34]
lea ecx, [edi + edi*8]
xor esi, esi
lea ebx, [edi + ecx*8]
mov word [eax + 0x22e], si
shl ebx, 4
cmp dword [ebx + 0x177c2d8], ebp
jne case.0x519ad8.21
push edi
mov ecx, 0x177bf80
call fcn.0056c090
test eax, eax
mov dword [esp + 0x38], eax
je case.0x519ad8.21
mov edx, dword [esp + 0x34]
cmp word [edx + 0x5c], si
jle case.0x519ad8.21
mov ecx, dword [esp + 0x14]
mov eax, esi
push eax
mov eax, dword [esp + 0x30]
inc esi
push eax
mov dword [esp + 0x18], esi
call fcn.0051ebb0
lea ecx, [eax + eax*8]
mov dword [esp + 0x20], eax
lea eax, [eax + ecx*8]
shl eax, 4
mov dword [esp + 0x1c], eax
cmp word [eax + 0x177c2cc], 2
jne 0x51bbd9
cmp word [eax + 0x177c4e0], 0
jne 0x51bbd9
cmp word [eax + 0x177c2ce], 0x1e
jne 0x51bbd9
xor ecx, ecx
mov word [ebx + 0x177c330], cx
mov word [ebx + 0x177c332], cx
mov edx, dword [eax + 0x177c314]
mov dword [esp + 0x30], ecx
movsx eax, word [edx*2 + 0x131be90]
mov dword [esp + 0x3c], eax
movsx eax, word [ebx + 0x177c5f6]
movsx ecx, word [ebx + 0x177c304]
movsx ebp, word [eax*4 + 0x677bd0]
movsx esi, word [eax*4 + 0x677bd2]
movsx edx, word [ebx + 0x177c306]
add ebp, ecx
add esi, edx
inc eax
and eax, 0x8000000f
jns 0x51bab0
dec eax
or eax, 0xfffffff0
inc eax
test ebp, ebp
mov word [ebx + 0x177c5f6], ax
jl 0x51bb4e
cmp ebp, 0x190
jge 0x51bb4e
test esi, esi
jl 0x51bb4e
cmp esi, 0x190
jge 0x51bb4e
lea eax, [esi + esi*4]
lea eax, [eax + eax*4]
shl eax, 4
mov cl, byte [eax + ebp + 0x9a68a8]
test cl, cl
je 0x51bb4e
lea ecx, [esi + esi*2]
mov eax, dword [ecx*4 + 0xb2ef10]
mov ecx, 0xfb7fc0
add eax, ebp
push eax
movsx edx, word [eax*2 + 0x131be90]
mov dword [esp + 0x28], edx
call fcn.0050c4e0
movsx ecx, word [ebx + 0x177c2fc]
movsx edx, word [ebx + 0x177c2fa]
add ecx, edx
sub ecx, eax
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
cmp eax, 0x10
jg 0x51bb4e
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x3c]
movsx edx, word [ebx + 0x177c2d6]
push 0
push eax
push ecx
push edx
mov ecx, 0x1cd0f70
call fcn.0049db40
test eax, eax
jne 0x51bb60
mov eax, dword [esp + 0x30]
inc eax
cmp eax, 0x10
mov dword [esp + 0x30], eax
jl 0x51ba7a
mov eax, dword [esp + 0x20]
push 0
push esi
push ebp
push eax
mov ecx, 0x177bf80
call fcn.0056d530
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x10]
mov esi, dword [esp + 0x20]
dec ecx
mov word [eax + 0x177c500], 0x65
mov word [eax + 0x177c5dc], 0x10
mov dword [esp + 0x10], ecx
mov word [eax + 0x177c5de], di
push esi
mov ecx, 0x177bf80
mov word [eax + 0x177c5c8], 0
call fcn.005705c0
mov ecx, dword [esp + 0x34]
push 0
push esi
mov edx, dword [ecx + 0x2c]
mov ecx, 0x177bf80
push edx
call fcn.005720e0
mov eax, dword [esp + 0x38]
dec eax
mov dword [esp + 0x38], eax
je case.0x519ad8.21
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x34]
movsx ecx, word [eax + 0x5c]
cmp esi, ecx
jl 0x51ba03
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x18
ret 0x14
mov ebx, dword [esp + 0x3c]
movsx eax, word [0xef7aaa]
neg ebx
sbb ebx, ebx
and ebx, 0x10
and eax, 0x8000000f
mov dword [esp + 0x34], ebx
jns 0x51bc1a
dec eax
or eax, 0xfffffff0
inc eax
mov ecx, 0xef7aa8
mov dword [esp + 0x2c], eax
call fcn.0046c570
lea edx, [edi + edi*8]
lea ecx, [edi + edx*8]
shl ecx, 4
mov dword [esp + 0x3c], ecx
cmp dword [ecx + 0x177c2d8], ebp
jne case.0x519ad8.21
mov word [ecx + 0x177c500], 6
cmp word [ecx + 0x177c5f4], 0
mov dword [esp + 0x30], 0
jle 0x51be60
xor edx, edx
jmp 0x51bc6e
mov ecx, dword [esp + 0x3c]
mov ebx, dword [esp + 0x34]
xor edx, edx
mov esi, dword [esp + 0x30]
lea eax, [edi + edi*8]
mov ebp, 1
lea eax, [edi + eax*8]
lea eax, [esi + eax*8]
movsx esi, word [eax*2 + 0x177c554]
mov word [eax*2 + 0x177c554], dx
mov dword [esp + 0x20], esi
lea eax, [esi + esi*8]
lea esi, [esi + eax*8]
shl esi, 4
mov word [esi + 0x177c600], dx
mov dword [esi + 0x177c5fc], edx
mov dword [esi + 0x177c4f0], edx
mov word [esi + 0x177c500], 0x6d
mov byte [esi + 0x177c56e], 0x20
mov byte [esi + 0x177c56f], 0xfe
mov word [esi + 0x177c502], bx
mov ax, word [ecx + 0x177c2ce]
cmp ax, 0x29
je 0x51bce1
cmp ax, 0x3d
jne 0x51bce8
mov word [esi + 0x177c2f0], bp
mov word [esi + 0x177c508], dx
mov word [esi + 0x177c298], bp
mov dword [esp + 0x38], edx
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x2c]
movsx edx, word [ecx + 0x177c304]
movsx ebp, word [eax*4 + 0x677bd0]
movsx ebx, word [eax*4 + 0x677bd2]
movsx ecx, word [ecx + 0x177c306]
add ebp, edx
add ebx, ecx
inc eax
and eax, 0x8000000f
jns 0x51bd31
dec eax
or eax, 0xfffffff0
inc eax
push 1
push ebx
push ebp
push edi
mov ecx, 0x1cd0f70
mov dword [esp + 0x3c], eax
call fcn.00494fe0
mov eax, dword [0x1cd0fbc]
test eax, eax
jne 0x51bd9c
push eax
push ebx
push ebp
push edi
mov ecx, 0x1cd0f70
call fcn.00494fe0
mov eax, dword [0x1cd0fbc]
mov ecx, dword [0x1cd0fb4]
mov edx, dword [0x1cd0fb8]
test eax, eax
jne 0x51bdb6
mov eax, dword [esp + 0x38]
inc eax
cmp eax, 0x10
mov dword [esp + 0x38], eax
jne 0x51bcfa
mov ebx, dword [esp + 0x3c]
mov eax, dword [ebx + 0x177c314]
movsx ecx, word [ebx + 0x177c304]
movsx edx, word [ebx + 0x177c306]
jmp 0x51bdac
mov ecx, dword [0x1cd0fb4]
mov edx, dword [0x1cd0fb8]
mov ebx, dword [esp + 0x3c]
test eax, eax
je 0x51bcfa
jmp 0x51bdba
mov ebx, dword [esp + 0x3c]
movzx bp, byte [eax + 0x12579f0]
mov word [esi + 0x177c33c], 0
mov word [esi + 0x177c304], cx
mov word [esi + 0x177c320], cx
mov word [esi + 0x177c306], dx
mov word [esi + 0x177c322], dx
mov word [esi + 0x177c2fa], bp
mov ebp, dword [esp + 0x20]
mov dword [esi + 0x177c314], eax
mov dword [esi + 0x177c324], eax
lea eax, [ecx*8 + 4]
lea ecx, [edx*8 + 4]
mov word [esi + 0x177c2f6], ax
mov word [esi + 0x177c2f8], cx
push ebp
mov ecx, 0x177bf80
call fcn.0056ee60
push ebp
mov ecx, 0x177bf80
call fcn.00525ec0
mov eax, dword [esp + 0x30]
mov dword [esi + 0x177c248], 1
mov dword [esi + 0x177c270], 0x10
inc eax
movsx edx, word [ebx + 0x177c5f4]
cmp eax, edx
mov dword [esp + 0x30], eax
jl 0x51bc64
mov ecx, dword [esp + 0x3c]
mov word [ecx + 0x177c5f4], 0
push edi
mov ecx, 0x177bf80
call fcn.00525f20
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x18
ret 0x14
mov word [ecx + 0x22e], si
xor edi, edi
cmp word [ecx + 0x5c], si
jle 0x51bf6c
mov ebp, 0x6e
mov ecx, dword [esp + 0x14]
mov eax, edi
push eax
push ebx
inc edi
call fcn.0051ebb0
lea ecx, [eax + eax*8]
lea esi, [eax + ecx*8]
shl esi, 4
cmp word [esi + 0x177c2cc], 2
jne case.0x51bee5.7
cmp word [esi + 0x177c4e0], 0
jne case.0x51bee5.7
movsx ecx, word [esi + 0x177c2ce]
add ecx, 0xfffffffb
cmp ecx, 0x48
ja case.0x51bee5.7
xor edx, edx
mov dl, byte [ecx + 0x51c554]
jmp dword [edx*4 + 0x51c548]
push eax
mov ecx, 0x177bf80
call fcn.005258a0
jmp case.0x51bee5.7
mov ecx, dword [esi + 0x177c2d8]
push 1
push ecx
mov ecx, dword [esp + 0x1c]
push eax
push 0x11
push ebx
call fcn.00519a50
mov eax, dword [0xd16a78]
mov word [esi + 0x177c500], bp
cmp eax, 6
jne case.0x51bee5.7
movsx eax, word [esi + 0x177c2ce]
lea edx, [esp + 0x2c]
mov ecx, 0x1a464b0
push edx
push eax
call fcn.00410650
mov ecx, dword [0x176582c]
mov eax, ecx
shl eax, 5
sub eax, ecx
lea eax, [eax + eax*4]
shl eax, 1
sub eax, ecx
lea edx, [eax + eax*2]
mov eax, dword [esp + 0x2c]
lea ecx, [ecx + edx*4]
add dword [ecx*4 + 0xd5d7b0], eax
mov ecx, dword [esp + 0x34]
movsx edx, word [ecx + 0x5c]
cmp edi, edx
jl 0x51be9b
mov ecx, 0x177bf80
call fcn.00570570
push 0
push 0
jmp 0x51c12a
lea eax, [edi + edi*4]
mov esi, dword [esp + 0x34]
xor ebx, ebx
lea edx, [eax + eax*4]
mov word [esi + 0x22e], bx
mov dword [esp + 0x10], ebx
lea eax, [edi + edx*4]
lea ebp, [edi + eax*2]
shl ebp, 2
movsx ecx, word [ebp + 0x1a465c2]
movsx eax, word [ebp + 0x1a465c4]
cmp ecx, ebx
jl 0x51bfd6
cmp ecx, 0x190
jge 0x51bfd6
cmp eax, ebx
jl 0x51bfd6
cmp eax, 0x190
jge 0x51bfd6
lea edx, [eax + eax*4]
lea edx, [edx + edx*4]
shl edx, 4
cmp byte [edx + ecx + 0x9a68a8], bl
jne 0x51bfe2
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x18
ret 0x14
lea eax, [eax + eax*2]
mov edx, dword [eax*4 + 0xb2ef10]
add edx, ecx
cmp word [esi + 0x5c], bx
movsx eax, word [edx*2 + 0x131be90]
mov dword [esp + 0x3c], eax
jle 0x51c0a6
mov ecx, dword [esp + 0x10]
mov eax, ecx
inc ecx
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x2c]
push eax
push ecx
mov ecx, dword [esp + 0x1c]
call fcn.0051ebb0
mov ebx, eax
lea edx, [ebx + ebx*8]
lea esi, [ebx + edx*8]
shl esi, 4
cmp word [esi + 0x177c2cc], 2
jne 0x51c094
cmp word [esi + 0x177c4e0], 0
jne 0x51c094
cmp word [esi + 0x177c2ce], 5
jne 0x51c094
xor eax, eax
push 1
mov word [esi + 0x177c330], ax
push edi
mov ecx, 0x1a464b0
mov word [esi + 0x177c332], ax
call fcn.0040cfa0
test eax, eax
je 0x51c094
mov eax, dword [esi + 0x177c314]
mov ecx, dword [esp + 0x3c]
movsx edx, word [esi + 0x177c2d6]
movsx eax, word [eax*2 + 0x131be90]
push 0
push eax
push ecx
push edx
mov ecx, 0x1cd0f70
call fcn.0049db40
test eax, eax
jne 0x51c0ca
mov eax, dword [esp + 0x34]
movsx ecx, word [eax + 0x5c]
cmp dword [esp + 0x10], ecx
jl 0x51c004
push edi
mov ecx, 0x1a464b0
mov dword [0x150c964], 1
call fcn.0040b120
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x18
ret 0x14
movsx ecx, word [ebp + 0x1a465c4]
lea edx, [ebx + ebx*8]
mov eax, dword [ebp + 0x1a4659c]
push 0
push ecx
lea esi, [ebx + edx*8]
mov ecx, 0x177bf80
movsx edx, word [ebp + 0x1a465c2]
shl esi, 4
push edx
push ebx
mov word [esi + 0x177c578], di
mov word [esi + 0x177c576], di
mov dword [esi + 0x177c2e0], eax
call fcn.0056d530
mov word [esi + 0x177c500], 7
push ebx
mov ecx, 0x177bf80
mov word [esi + 0x177c5dc], 0x15
call fcn.005705c0
push 0
push ebx
mov eax, dword [esp + 0x3c]
mov ecx, dword [eax + 0x2c]
push ecx
mov ecx, 0x177bf80
call fcn.005720e0
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x18
ret 0x14
ja 0x51c60f
movsx edx, word [eax + 0x177c304]
push 0xffffffffffffffff
mov edi, 0x77c30490
add dword [edx - 1], ebp
push 0xffffffffffffffff
push ecx
push edx
mov ecx, 0x1cd0f70
call fcn.00490270
jmp 0x51c64f
mov eax, dword [0x1ceb310]
mov edi, 0x989680
test eax, eax
je 0x51c694
mov ecx, 0x1ceb310
mov eax, ecx
mov ecx, dword [ecx]
movsx edx, word [ecx*2 + 0x1391af0]
cmp edx, dword [0x1cd0f74]
jne 0x51c685
mov ecx, dword [eax]
movsx edx, word [ecx*2 + 0x136a6d0]
mov dword [eax + 8], edx
jmp 0x51c688
mov dword [eax + 8], edi
mov edx, dword [eax + 0xc]
add eax, 0xc
test edx, edx
mov ecx, eax
jne 0x51c664
mov eax, dword [0x1ceb310]
xor esi, esi
test eax, eax
je 0x51c6f3
mov eax, 0x1ceb314
cmp dword [eax], 0
je 0x51c6ef
mov edx, dword [eax + 8]
test edx, edx
je 0x51c6ef
mov ecx, dword [eax + 0xc]
test ecx, ecx
je 0x51c6ef
mov ecx, dword [eax + 4]
mov ebx, dword [eax + 0x10]
cmp ecx, ebx
jle 0x51c6e5
mov ecx, dword [eax - 4]
mov dword [eax - 4], edx
mov dword [eax + 8], ecx
mov edx, dword [eax + 0xc]
mov ecx, dword [eax]
mov dword [eax], edx
mov dword [eax + 0xc], ecx
mov edx, dword [eax + 0x10]
mov ecx, dword [eax + 4]
mov dword [eax + 4], edx
mov esi, 1
mov dword [eax + 0x10], ecx
mov ecx, dword [eax + 8]
add eax, 0xc
test ecx, ecx
jne 0x51c6a4
test esi, esi
jne 0x51c694
mov eax, dword [0x1ceb310]
xor esi, esi
xor edx, edx
test eax, eax
je 0x51c731
mov eax, 0x1ceb318
mov ecx, 0x1ceb314
cmp dword [eax], edi
je 0x51c726
cmp esi, edx
je 0x51c722
mov ebx, dword [eax - 8]
mov dword [ecx - 4], ebx
mov ebx, dword [eax - 4]
mov dword [ecx], ebx
mov ebx, dword [eax]
mov dword [ecx + 4], ebx
inc edx
add ecx, 0xc
mov ebx, dword [eax + 4]
add eax, 0xc
inc esi
test ebx, ebx
jne 0x51c70a
lea eax, [edx + edx*2]
pop edi
pop esi
pop ebx
mov dword [eax*4 + 0x1ceb310], 0
ret 8
lea edx, [ecx + ecx*8]
lea eax, [ecx + edx*8]
shl eax, 4
cmp word [eax + 0x177c5c8], bx
jg 0x52c7a0
push ebp
push ecx
mov word [eax + 0x177c5b4], bp
call fcn.00567540
mov eax, dword [0x9a6750]
push 3
push eax
call fcn.00567610
add esp, 0x10
test eax, eax
jne 0x52c7a0
mov eax, dword [0x9a6750]
lea ecx, [eax + eax*8]
lea eax, [eax + ecx*8]
shl eax, 4
movsx ecx, word [eax + 0x177c578]
lea edx, [ecx + ecx*4]
lea edx, [edx + edx*4]
lea edx, [ecx + edx*4]
lea ecx, [ecx + edx*2]
cmp word [ecx*4 + 0x1a46754], di
jne 0x52c38d
mov byte [eax + 0x177c62f], 2
jmp 0x52c394
mov byte [eax + 0x177c62f], 3
movsx edx, word [eax + 0x177c2d6]
push edx
push ebp
push 2
mov ecx, 0x1a464b0
call fcn.0040f2d0
mov esi, eax
push ebp
push esi
mov ecx, 0x1a464b0
call fcn.0040cfa0
test eax, eax
je 0x52c423
mov edx, dword [0x9a6750]
push ebx
lea eax, [edx + edx*8]
lea ecx, [edx + eax*8]
lea eax, [esi + esi*4]
shl ecx, 4
add al, 0x8d
add al, 0x80
add al, 0x8d
add al, 0x80
mov word [ecx + 0x177c576], si
lea eax, [esi + eax*4]
lea eax, [esi + eax*2]
shl eax, 2
mov esi, dword [eax + 0x1a4659c]
mov dword [ecx + 0x177c2e0], esi
movsx ecx, word [eax + 0x1a465c4]
movsx eax, word [eax + 0x1a465c2]
push ecx
push eax
push edx
mov ecx, 0x177bf80
call fcn.0056d530
test eax, eax
je 0x52c423
mov eax, dword [0x9a6750]
lea ecx, [eax + eax*8]
lea edx, [eax + ecx*8]
shl edx, 4
mov word [edx + 0x177c500], bp
jmp 0x52c428
mov eax, dword [0x9a6750]
push ebp
push eax
mov ecx, 0x177bf80
call fcn.0056f360
test eax, eax
mov eax, dword [0x9a6750]
lea ecx, [eax + eax*8]
lea edx, [eax + ecx*8]
je 0x52c454
shl edx, 4
pop edi
pop esi
pop ebp
mov word [edx + 0x177c500], 3
pop ebx
ret
shl edx, 4
pop edi
pop esi
pop ebp
mov word [edx + 0x177c2cc], 3
pop ebx
ret
pop edi
pop esi
pop ebp
pop ebx
ret